Code:
/ DotNET / DotNET / 8.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
- FileNotFoundException.cs
- FormsAuthenticationUserCollection.cs
- ManualWorkflowSchedulerService.cs
- DispatchOperationRuntime.cs
- QilGenerator.cs
- SafeRightsManagementQueryHandle.cs
- TextElementCollection.cs
- PathSegmentCollection.cs
- odbcmetadatafactory.cs
- XXXInfos.cs
- StreamReader.cs
- RenamedEventArgs.cs
- SubclassTypeValidator.cs
- BaseCollection.cs
- SmiXetterAccessMap.cs
- EntityDataSourceSelectingEventArgs.cs
- DataGridRow.cs
- KeyValueSerializer.cs
- GridViewCancelEditEventArgs.cs
- UnsafeNativeMethods.cs
- ServerValidateEventArgs.cs
- XmlILOptimizerVisitor.cs
- SqlDataAdapter.cs
- StateMachineExecutionState.cs
- DesignTimeParseData.cs
- RandomDelayQueuedSendsAsyncResult.cs
- SettingsProperty.cs
- StorageRoot.cs
- ServiceDebugBehavior.cs
- TreeWalker.cs
- LiteralText.cs
- DiagnosticSection.cs
- Style.cs
- ReadWriteSpinLock.cs
- CalendarDayButton.cs
- UnknownWrapper.cs
- HtmlLink.cs
- UnitySerializationHolder.cs
- Thickness.cs
- SafeSerializationManager.cs
- DataStorage.cs
- Win32.cs
- DataGridItemEventArgs.cs
- LabelDesigner.cs
- DbConnectionStringBuilder.cs
- BlobPersonalizationState.cs
- ReverseComparer.cs
- ExpressionConverter.cs
- AssemblyBuilderData.cs
- ConfigurationSectionGroupCollection.cs
- ControlTemplate.cs
- FlowLayout.cs
- ObjectDataSourceStatusEventArgs.cs
- ErrorsHelper.cs
- GeometryConverter.cs
- AddingNewEventArgs.cs
- EnumValidator.cs
- UserNameSecurityToken.cs
- TreeView.cs
- CodeValidator.cs
- ProcessModuleCollection.cs
- ReverseInheritProperty.cs
- ControlParameter.cs
- LabelEditEvent.cs
- XmlUtil.cs
- HyperLinkField.cs
- ChangesetResponse.cs
- PbrsForward.cs
- ShutDownListener.cs
- WmlLabelAdapter.cs
- TextElementEnumerator.cs
- AbsoluteQuery.cs
- ResXResourceReader.cs
- CheckBoxStandardAdapter.cs
- PolyQuadraticBezierSegment.cs
- CollectionBase.cs
- HelpProvider.cs
- FastPropertyAccessor.cs
- PersonalizableAttribute.cs
- Thread.cs
- XmlEntity.cs
- DataViewManagerListItemTypeDescriptor.cs
- SmiXetterAccessMap.cs
- XMLSyntaxException.cs
- ManagementNamedValueCollection.cs
- WCFServiceClientProxyGenerator.cs
- SystemDropShadowChrome.cs
- CookieParameter.cs
- DataBindingExpressionBuilder.cs
- PlatformNotSupportedException.cs
- OutputCacheProfile.cs
- UrlMapping.cs
- ValidationHelper.cs
- PersonalizationAdministration.cs
- XmlnsPrefixAttribute.cs
- NullRuntimeConfig.cs
- EnumUnknown.cs
- ThemeDirectoryCompiler.cs
- RightsDocument.cs
- ColorConverter.cs