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
- ResourcePart.cs
- ScaleTransform.cs
- WebBrowserDesigner.cs
- ExpressionVisitor.cs
- RouteTable.cs
- FormatVersion.cs
- HtmlInputHidden.cs
- FragmentNavigationEventArgs.cs
- DataViewSetting.cs
- MDIClient.cs
- XamlFilter.cs
- PermissionRequestEvidence.cs
- Header.cs
- TableLayoutPanel.cs
- SqlRemoveConstantOrderBy.cs
- ControlValuePropertyAttribute.cs
- XmlDocumentFragment.cs
- ManipulationDeltaEventArgs.cs
- EditorPartCollection.cs
- DictionarySectionHandler.cs
- UIElementAutomationPeer.cs
- RootProjectionNode.cs
- Geometry.cs
- BaseValidator.cs
- CodeRemoveEventStatement.cs
- TimeSpanStorage.cs
- WebBrowserContainer.cs
- ToolStripMenuItemCodeDomSerializer.cs
- StreamGeometry.cs
- HeaderElement.cs
- RequestCachePolicy.cs
- CodeTypeReference.cs
- HyperlinkAutomationPeer.cs
- DelegatingConfigHost.cs
- DrawingGroup.cs
- ProviderCollection.cs
- SchemaDeclBase.cs
- EntityKeyElement.cs
- MatchingStyle.cs
- NativeRecognizer.cs
- SmtpSection.cs
- CqlParser.cs
- EFAssociationProvider.cs
- ResourceAssociationSet.cs
- BamlLocalizableResourceKey.cs
- DBSchemaTable.cs
- IdentifierElement.cs
- XmlSchemaAttributeGroupRef.cs
- OleDbInfoMessageEvent.cs
- GetWinFXPath.cs
- SecUtil.cs
- ToolboxService.cs
- SessionStateSection.cs
- HandleRef.cs
- SystemNetworkInterface.cs
- WindowsEditBoxRange.cs
- ToolStripManager.cs
- XPathDocumentBuilder.cs
- BitArray.cs
- ExitEventArgs.cs
- ConditionCollection.cs
- XmlSchemaComplexContent.cs
- WindowsAuthenticationModule.cs
- RequiredAttributeAttribute.cs
- BindingsCollection.cs
- MobileCategoryAttribute.cs
- EntityContainerEntitySetDefiningQuery.cs
- ComponentDispatcher.cs
- BamlLocalizer.cs
- SspiNegotiationTokenAuthenticatorState.cs
- FtpWebResponse.cs
- TransformProviderWrapper.cs
- TypeConverterAttribute.cs
- FontResourceCache.cs
- DoubleKeyFrameCollection.cs
- QueryMatcher.cs
- CompilationUtil.cs
- UITypeEditor.cs
- OdbcConnectionString.cs
- MouseGesture.cs
- EditingCommands.cs
- VerificationException.cs
- SqlConnectionString.cs
- DynamicControlParameter.cs
- fixedPageContentExtractor.cs
- Cloud.cs
- XmlSchemaDocumentation.cs
- AddInControllerImpl.cs
- Cursors.cs
- HttpListenerContext.cs
- Executor.cs
- SortedSet.cs
- EventHandlerList.cs
- StickyNoteHelper.cs
- SoapAttributeOverrides.cs
- Group.cs
- TextBlockAutomationPeer.cs
- exports.cs
- precedingsibling.cs
- NullableDecimalSumAggregationOperator.cs