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
- SecurityBindingElementImporter.cs
- ResXResourceWriter.cs
- ConfigurationStrings.cs
- SecondaryViewProvider.cs
- BinaryNode.cs
- RpcCryptoRequest.cs
- EntityPropertyMappingAttribute.cs
- TextServicesCompartmentEventSink.cs
- TreeNodeCollection.cs
- DeviceSpecific.cs
- Boolean.cs
- NodeInfo.cs
- QilInvoke.cs
- ObjectMemberMapping.cs
- ParserOptions.cs
- AggregatePushdown.cs
- EnvelopedPkcs7.cs
- SmiEventSink_Default.cs
- Convert.cs
- ExpressionList.cs
- FlowLayoutSettings.cs
- Timeline.cs
- ConfigurationLocation.cs
- ObjectDataSourceMethodEventArgs.cs
- CompilerGeneratedAttribute.cs
- DataControlLinkButton.cs
- DataViewSettingCollection.cs
- BasicKeyConstraint.cs
- CheckBoxPopupAdapter.cs
- ToolStripSplitStackLayout.cs
- DescendantQuery.cs
- ListGeneralPage.cs
- altserialization.cs
- columnmapfactory.cs
- SectionXmlInfo.cs
- DelegatingConfigHost.cs
- ScrollBarRenderer.cs
- ParamArrayAttribute.cs
- InvokerUtil.cs
- SchemaEntity.cs
- XPathAxisIterator.cs
- MessageQueueCriteria.cs
- ParserOptions.cs
- SessionIDManager.cs
- SamlAttributeStatement.cs
- CSharpCodeProvider.cs
- __ConsoleStream.cs
- PageRequestManager.cs
- SmtpTransport.cs
- SecurityManager.cs
- UpDownEvent.cs
- TableAdapterManagerMethodGenerator.cs
- ProcessModule.cs
- SmiContext.cs
- ProjectionCamera.cs
- FixedDocumentSequencePaginator.cs
- RC2CryptoServiceProvider.cs
- XPathPatternBuilder.cs
- TextTrailingCharacterEllipsis.cs
- FormViewUpdateEventArgs.cs
- ExtendedPropertyInfo.cs
- RpcAsyncResult.cs
- DashStyle.cs
- ProviderSettings.cs
- AutomationTextAttribute.cs
- ImageConverter.cs
- BitmapVisualManager.cs
- Registry.cs
- MiniCustomAttributeInfo.cs
- ProcessModule.cs
- TextRunProperties.cs
- ObjectViewFactory.cs
- ExpandCollapsePatternIdentifiers.cs
- ReadOnlyAttribute.cs
- PersistChildrenAttribute.cs
- ClientSettingsStore.cs
- Point3DAnimationBase.cs
- InputBuffer.cs
- DbProviderFactory.cs
- XmlSchemaImport.cs
- OleAutBinder.cs
- PkcsMisc.cs
- SubpageParaClient.cs
- Point3DCollection.cs
- LinkArea.cs
- RtfToken.cs
- ExtensionSimplifierMarkupObject.cs
- AsyncCodeActivityContext.cs
- ExtentKey.cs
- ExpressionParser.cs
- Options.cs
- MessageQueueEnumerator.cs
- WebControlsSection.cs
- AssertFilter.cs
- QueryResults.cs
- StringSource.cs
- Utils.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- IndicFontClient.cs
- EnumType.cs