Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Policy / ApplicationDirectoryMembershipCondition.cs / 1 / ApplicationDirectoryMembershipCondition.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// ApplicationDirectoryMembershipCondition.cs
//
// Implementation of membership condition for "application directories"
//
namespace System.Security.Policy {
using System;
using SecurityElement = System.Security.SecurityElement;
using System.Security.Policy;
using URLString = System.Security.Util.URLString;
using System.Collections;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
sealed public class ApplicationDirectoryMembershipCondition : IMembershipCondition, IConstantMembershipCondition
{
//------------------------------------------------------
//
// PRIVATE STATE DATA
//
//-----------------------------------------------------
//-----------------------------------------------------
//
// PUBLIC CONSTRUCTORS
//
//-----------------------------------------------------
public ApplicationDirectoryMembershipCondition()
{
}
//------------------------------------------------------
//
// IMEMBERSHIPCONDITION IMPLEMENTATION
//
//-----------------------------------------------------
public bool Check( Evidence evidence )
{
if (evidence == null)
return false;
IEnumerator enumerator = evidence.GetHostEnumerator();
while (enumerator.MoveNext())
{
Object obj = enumerator.Current;
if (obj is ApplicationDirectory)
{
ApplicationDirectory dir = (ApplicationDirectory)obj;
IEnumerator innerEnumerator = evidence.GetHostEnumerator();
while (innerEnumerator.MoveNext())
{
Object innerObj = innerEnumerator.Current;
if (innerObj is Url)
{
// We need to add a wildcard at the end because IsSubsetOf
// keys off of it.
String appDir = dir.Directory;
if (appDir != null && appDir.Length > 1)
{
if (appDir[appDir.Length-1] == '/')
appDir += "*";
else
appDir += "/*"; // comment
URLString appDirString = new URLString( appDir );
if (((Url)innerObj).GetURLString().IsSubsetOf( appDirString ))
{
return true;
}
}
}
}
}
}
return false;
}
public IMembershipCondition Copy()
{
return new ApplicationDirectoryMembershipCondition();
}
public SecurityElement ToXml()
{
return ToXml( null );
}
public void FromXml( SecurityElement e )
{
FromXml( e, null );
}
public SecurityElement ToXml( PolicyLevel level )
{
SecurityElement root = new SecurityElement( "IMembershipCondition" );
System.Security.Util.XMLUtil.AddClassAttribute( root, this.GetType(), "System.Security.Policy.ApplicationDirectoryMembershipCondition" );
// If you hit this assert then most likely you are trying to change the name of this class.
// This is ok as long as you change the hard coded string above and change the assert below.
BCLDebug.Assert( this.GetType().FullName.Equals( "System.Security.Policy.ApplicationDirectoryMembershipCondition" ), "Class name changed!" );
root.AddAttribute( "version", "1" );
return root;
}
public void FromXml( SecurityElement e, PolicyLevel level )
{
if (e == null)
throw new ArgumentNullException("e");
if (!e.Tag.Equals( "IMembershipCondition" ))
{
throw new ArgumentException( Environment.GetResourceString( "Argument_MembershipConditionElement" ) );
}
}
public override bool Equals( Object o )
{
return (o is ApplicationDirectoryMembershipCondition);
}
public override int GetHashCode()
{
return typeof( ApplicationDirectoryMembershipCondition ).GetHashCode();
}
public override String ToString()
{
return Environment.GetResourceString( "ApplicationDirectory_ToString" );
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventLogHandle.cs
- BehaviorEditorPart.cs
- SystemEvents.cs
- SqlDataSourceSelectingEventArgs.cs
- DataGridViewColumnStateChangedEventArgs.cs
- InstanceOwnerQueryResult.cs
- _OSSOCK.cs
- ScrollProperties.cs
- QualifiedCellIdBoolean.cs
- DataObjectFieldAttribute.cs
- TraceContextRecord.cs
- WebHttpSecurityModeHelper.cs
- RadioButtonAutomationPeer.cs
- FormViewUpdatedEventArgs.cs
- Compress.cs
- XmlSchemaSequence.cs
- InvocationExpression.cs
- DataControlCommands.cs
- PartialCachingAttribute.cs
- IsolatedStorageFile.cs
- DataGridViewAccessibleObject.cs
- WindowsEditBox.cs
- ProxyElement.cs
- MobileListItemCollection.cs
- SoapDocumentServiceAttribute.cs
- ElementNotAvailableException.cs
- DataSourceCache.cs
- FreeFormDragDropManager.cs
- BitmapMetadataEnumerator.cs
- XmlNamespaceMappingCollection.cs
- TreeViewBindingsEditorForm.cs
- base64Transforms.cs
- Figure.cs
- RelationalExpressions.cs
- ErrorTableItemStyle.cs
- ObfuscateAssemblyAttribute.cs
- AutomationPatternInfo.cs
- ConnectionOrientedTransportChannelListener.cs
- SchemaDeclBase.cs
- XmlProcessingInstruction.cs
- TreeWalker.cs
- ViewManager.cs
- ViewBox.cs
- Grid.cs
- SqlDataAdapter.cs
- CharEntityEncoderFallback.cs
- ActivityScheduledQuery.cs
- SecUtil.cs
- LocalizabilityAttribute.cs
- BasicCellRelation.cs
- TextRangeProviderWrapper.cs
- TableItemStyle.cs
- RecognitionResult.cs
- SendingRequestEventArgs.cs
- HtmlGenericControl.cs
- __ComObject.cs
- CodeTypeParameterCollection.cs
- SqlNotificationRequest.cs
- BigInt.cs
- FormViewPagerRow.cs
- DesignerTransaction.cs
- IsolatedStorageFile.cs
- SqlCachedBuffer.cs
- StylusPointProperties.cs
- IResourceProvider.cs
- CodeTypeParameter.cs
- ClientTargetCollection.cs
- GroupLabel.cs
- JsonReaderDelegator.cs
- ComplusEndpointConfigContainer.cs
- BamlResourceDeserializer.cs
- Version.cs
- TransportSecurityBindingElement.cs
- ScrollItemProviderWrapper.cs
- Accessible.cs
- BitmapPalette.cs
- DataView.cs
- InvalidCastException.cs
- TargetPerspective.cs
- KeyFrames.cs
- clipboard.cs
- HostExecutionContextManager.cs
- ObjectTypeMapping.cs
- FormatException.cs
- ReliableSession.cs
- ExpressionTextBoxAutomationPeer.cs
- Positioning.cs
- TraceLevelStore.cs
- AppDomainManager.cs
- List.cs
- Vector3DCollection.cs
- TaiwanCalendar.cs
- XmlSchemaExporter.cs
- QilGenerator.cs
- PropertyChangingEventArgs.cs
- ComplexTypeEmitter.cs
- DbProviderFactories.cs
- ProgressChangedEventArgs.cs
- DialogDivider.cs
- EntityDataSourceWrapperCollection.cs