Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Policy / UnionCodeGroup.cs / 1 / UnionCodeGroup.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// UnionCodeGroup.cs
//
// Representation for code groups used for the policy mechanism
//
namespace System.Security.Policy {
using System;
using System.Security.Util;
using System.Security;
using System.Collections;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
sealed public class UnionCodeGroup : CodeGroup, IUnionSemanticCodeGroup
{
internal UnionCodeGroup()
: base()
{
}
internal UnionCodeGroup( IMembershipCondition membershipCondition, PermissionSet permSet )
: base( membershipCondition, permSet )
{
}
public UnionCodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy )
: base( membershipCondition, policy )
{
}
public override PolicyStatement Resolve( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
PolicyStatement thisPolicy = this.PolicyStatement;
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
PolicyStatement childPolicy = ((CodeGroup)enumerator.Current).Resolve( evidence );
if (childPolicy != null)
{
if (((thisPolicy.Attributes & childPolicy.Attributes) & PolicyStatementAttribute.Exclusive) == PolicyStatementAttribute.Exclusive)
{
throw new PolicyException( Environment.GetResourceString( "Policy_MultipleExclusive" ) );
}
thisPolicy.GetPermissionSetNoCopy().InplaceUnion( childPolicy.GetPermissionSetNoCopy() );
thisPolicy.Attributes = thisPolicy.Attributes | childPolicy.Attributes;
}
}
return thisPolicy;
}
else
{
return null;
}
}
///
PolicyStatement IUnionSemanticCodeGroup.InternalResolve( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
return this.PolicyStatement;
}
else
{
return null;
}
}
public override CodeGroup ResolveMatchingCodeGroups( Evidence evidence )
{
if (evidence == null)
throw new ArgumentNullException("evidence");
if (this.MembershipCondition.Check( evidence ))
{
CodeGroup retGroup = this.Copy();
retGroup.Children = new ArrayList();
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
CodeGroup matchingGroups = ((CodeGroup)enumerator.Current).ResolveMatchingCodeGroups( evidence );
// If the child has a policy, we are done.
if (matchingGroups != null)
{
retGroup.AddChild( matchingGroups );
}
}
return retGroup;
}
else
{
return null;
}
}
public override CodeGroup Copy()
{
UnionCodeGroup group = new UnionCodeGroup();
group.MembershipCondition = this.MembershipCondition;
group.PolicyStatement = this.PolicyStatement;
group.Name = this.Name;
group.Description = this.Description;
IEnumerator enumerator = this.Children.GetEnumerator();
while (enumerator.MoveNext())
{
group.AddChild( (CodeGroup)enumerator.Current );
}
return group;
}
public override String MergeLogic
{
get
{
return Environment.GetResourceString( "MergeLogic_Union" );
}
}
internal override String GetTypeName()
{
return "System.Security.Policy.UnionCodeGroup";
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeSnippetCompileUnit.cs
- NativeMethods.cs
- DescendentsWalkerBase.cs
- CaseExpr.cs
- TablePattern.cs
- HtmlInputReset.cs
- XmlQueryOutput.cs
- VisualBrush.cs
- GestureRecognitionResult.cs
- Timer.cs
- WebContentFormatHelper.cs
- Environment.cs
- Transform3D.cs
- StructuredTypeEmitter.cs
- MessageHeaderT.cs
- SHA256Managed.cs
- CrossAppDomainChannel.cs
- OleDbWrapper.cs
- XmlCollation.cs
- UTF8Encoding.cs
- ActiveXContainer.cs
- HtmlInputCheckBox.cs
- PerformanceCounterManager.cs
- AutomationFocusChangedEventArgs.cs
- SecuritySessionFilter.cs
- IPHostEntry.cs
- WebFormsRootDesigner.cs
- MimeReturn.cs
- VerticalAlignConverter.cs
- ListControl.cs
- BoundsDrawingContextWalker.cs
- ListViewSortEventArgs.cs
- QueryContinueDragEvent.cs
- UserControlBuildProvider.cs
- MLangCodePageEncoding.cs
- CollectionChangeEventArgs.cs
- SqlAggregateChecker.cs
- DynamicMethod.cs
- QilTernary.cs
- TypeResolver.cs
- EditorPartCollection.cs
- ProviderMetadata.cs
- DiscriminatorMap.cs
- XamlStyleSerializer.cs
- SafeHandle.cs
- NameValuePermission.cs
- CodeTypeParameter.cs
- ThousandthOfEmRealDoubles.cs
- DataGridCellClipboardEventArgs.cs
- ActivityAction.cs
- DataConnectionHelper.cs
- SHA384.cs
- InvariantComparer.cs
- SmtpReplyReaderFactory.cs
- FormClosedEvent.cs
- SqlCommand.cs
- SamlAssertion.cs
- ReadOnlyPropertyMetadata.cs
- GcHandle.cs
- SqlDelegatedTransaction.cs
- QilTypeChecker.cs
- TargetConverter.cs
- ThreadAttributes.cs
- TextRange.cs
- HealthMonitoringSectionHelper.cs
- SerializerDescriptor.cs
- CodeTypeReference.cs
- ValueType.cs
- QuaternionKeyFrameCollection.cs
- FileUtil.cs
- LiteralTextContainerControlBuilder.cs
- CompilerError.cs
- RijndaelManagedTransform.cs
- StorageMappingFragment.cs
- DataGridItemEventArgs.cs
- ProjectionNode.cs
- ShapeTypeface.cs
- SspiHelper.cs
- PageClientProxyGenerator.cs
- DelegatingTypeDescriptionProvider.cs
- CommandHelper.cs
- FontConverter.cs
- NativeMethodsOther.cs
- AssociationType.cs
- DataObjectPastingEventArgs.cs
- ObjectViewEntityCollectionData.cs
- AttributeParameterInfo.cs
- PersonalizationState.cs
- WbemProvider.cs
- NetworkInformationPermission.cs
- JpegBitmapDecoder.cs
- SuppressMergeCheckAttribute.cs
- SafeWaitHandle.cs
- HttpContextWrapper.cs
- ExpressionConverter.cs
- Quaternion.cs
- UserValidatedEventArgs.cs
- DrawingState.cs
- ThreadStateException.cs
- FixedBufferAttribute.cs