Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Policy / ApplicationDirectoryMembershipCondition.cs / 1305376 / 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, IReportMatchMembershipCondition
{
//------------------------------------------------------
//
// PRIVATE STATE DATA
//
//-----------------------------------------------------
//-----------------------------------------------------
//
// PUBLIC CONSTRUCTORS
//
//-----------------------------------------------------
public ApplicationDirectoryMembershipCondition()
{
}
//------------------------------------------------------
//
// IMEMBERSHIPCONDITION IMPLEMENTATION
//
//-----------------------------------------------------
public bool Check( Evidence evidence )
{
object usedEvidence = null;
return (this as IReportMatchMembershipCondition).Check(evidence, out usedEvidence);
}
bool IReportMatchMembershipCondition.Check(Evidence evidence, out object usedEvidence)
{
usedEvidence = null;
if (evidence == null)
return false;
ApplicationDirectory dir = evidence.GetHostEvidence();
Url url = evidence.GetHostEvidence();
if (dir != null && url != null)
{
// 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 += "/*";
URLString appDirString = new URLString(appDir);
if (url.GetURLString().IsSubsetOf(appDirString))
{
usedEvidence = dir;
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" );
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ConfigPathUtility.cs
- ZipFileInfoCollection.cs
- AccessDataSourceView.cs
- wgx_sdk_version.cs
- SafeMILHandle.cs
- PointKeyFrameCollection.cs
- EntityTypeBase.cs
- PageRequestManager.cs
- TreeNodeCollection.cs
- ConnectionStringsExpressionBuilder.cs
- XamlTypeMapperSchemaContext.cs
- RichTextBox.cs
- PolyBezierSegmentFigureLogic.cs
- Matrix3D.cs
- BackStopAuthenticationModule.cs
- MsmqIntegrationSecurityMode.cs
- AnimationStorage.cs
- FullTextState.cs
- XmlSchemaSimpleContent.cs
- CollectionViewGroupInternal.cs
- ResourcePermissionBaseEntry.cs
- Helpers.cs
- BinarySerializer.cs
- _BufferOffsetSize.cs
- MachineKeySection.cs
- ProfileBuildProvider.cs
- DynamicObjectAccessor.cs
- SkipQueryOptionExpression.cs
- JsonObjectDataContract.cs
- XpsDigitalSignature.cs
- UdpTransportSettings.cs
- XD.cs
- Identity.cs
- SmtpMail.cs
- UnsafeNativeMethodsPenimc.cs
- AttachedAnnotation.cs
- HttpServerVarsCollection.cs
- ProviderCollection.cs
- IdentifierCollection.cs
- ValueTable.cs
- ExpressionContext.cs
- EntityViewGenerationAttribute.cs
- newinstructionaction.cs
- PackWebResponse.cs
- TextCharacters.cs
- ClipboardProcessor.cs
- FixedTextContainer.cs
- BoundPropertyEntry.cs
- ResumeStoryboard.cs
- XmlMapping.cs
- SchemaTypeEmitter.cs
- StyleSelector.cs
- WindowsTitleBar.cs
- Substitution.cs
- ReadOnlyKeyedCollection.cs
- __ConsoleStream.cs
- WebPartVerbCollection.cs
- SignatureConfirmationElement.cs
- Pkcs7Recipient.cs
- PanelStyle.cs
- FactoryMaker.cs
- ObjectDataSourceSelectingEventArgs.cs
- NegotiateStream.cs
- VirtualDirectoryMapping.cs
- smtppermission.cs
- FixedTextPointer.cs
- Trigger.cs
- TransformGroup.cs
- FormsAuthenticationModule.cs
- WindowShowOrOpenTracker.cs
- PlatformCulture.cs
- HMACSHA384.cs
- BinaryUtilClasses.cs
- LicenseProviderAttribute.cs
- RefreshPropertiesAttribute.cs
- FeatureSupport.cs
- InteropBitmapSource.cs
- TextRunTypographyProperties.cs
- CaseInsensitiveHashCodeProvider.cs
- RtfFormatStack.cs
- HttpModuleCollection.cs
- BinaryMethodMessage.cs
- SqlDependency.cs
- WinEventHandler.cs
- RegistryPermission.cs
- OperationInvokerBehavior.cs
- PowerStatus.cs
- EntityCollectionChangedParams.cs
- InheritedPropertyDescriptor.cs
- GuidelineSet.cs
- LayoutUtils.cs
- CommandEventArgs.cs
- XmlDictionaryString.cs
- AliasedSlot.cs
- DataKey.cs
- DetailsViewActionList.cs
- XPathSelectionIterator.cs
- FixedNode.cs
- CompareInfo.cs
- Point.cs