Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Policy / FirstMatchCodeGroup.cs / 1305376 / FirstMatchCodeGroup.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // FirstMatchCodeGroup.cs // //[....] // // Representation for code groups used for the policy mechanism // namespace System.Security.Policy { using System; using System.Security; using System.Security.Util; using System.Collections; using System.Diagnostics.Contracts; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] [Obsolete("This type is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")] sealed public class FirstMatchCodeGroup : CodeGroup { internal FirstMatchCodeGroup() : base() { } public FirstMatchCodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy ) : base( membershipCondition, policy ) { } [System.Security.SecuritySafeCritical] // auto-generated public override PolicyStatement Resolve( Evidence evidence ) { if (evidence == null) throw new ArgumentNullException("evidence"); Contract.EndContractBlock(); object usedEvidence = null; if (PolicyManager.CheckMembershipCondition(MembershipCondition, evidence, out usedEvidence)) { PolicyStatement childPolicy = null; IEnumerator enumerator = this.Children.GetEnumerator(); while (enumerator.MoveNext()) { childPolicy = PolicyManager.ResolveCodeGroup(enumerator.Current as CodeGroup, evidence); // If the child has a policy, we are done. if (childPolicy != null) { break; } } // If any delay-evidence was used to generate this grant set, then we need to keep track of // that for potentially later forcing it to be verified. IDelayEvaluatedEvidence delayEvidence = usedEvidence as IDelayEvaluatedEvidence; bool delayEvidenceNeedsVerification = delayEvidence != null && !delayEvidence.IsVerified; PolicyStatement thisPolicy = this.PolicyStatement; // PolicyStatement getter makes a copy for us if (thisPolicy == null) { // We didn't add any permissions, but we enabled our children to be evaluated, and // therefore its grant set is dependent on any of our delay evidence. if (delayEvidenceNeedsVerification) { childPolicy = childPolicy.Copy(); childPolicy.AddDependentEvidence(delayEvidence); } return childPolicy; } else if (childPolicy != null) { // Combine the child and this policy and return it. PolicyStatement combined = thisPolicy.Copy(); if (delayEvidenceNeedsVerification) { combined.AddDependentEvidence(delayEvidence); } combined.InplaceUnion(childPolicy); return combined; } else { // Otherwise we just copy the this policy. if (delayEvidenceNeedsVerification) { thisPolicy.AddDependentEvidence(delayEvidence); } return thisPolicy; } } else { return null; } } [System.Security.SecuritySafeCritical] // auto-generated public override CodeGroup ResolveMatchingCodeGroups( Evidence evidence ) { if (evidence == null) throw new ArgumentNullException("evidence"); Contract.EndContractBlock(); 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 ); break; } } return retGroup; } else { return null; } } [System.Security.SecuritySafeCritical] // auto-generated public override CodeGroup Copy() { FirstMatchCodeGroup group = new FirstMatchCodeGroup(); 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_FirstMatch" ); } } internal override String GetTypeName() { return "System.Security.Policy.FirstMatchCodeGroup"; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // FirstMatchCodeGroup.cs // //[....] // // Representation for code groups used for the policy mechanism // namespace System.Security.Policy { using System; using System.Security; using System.Security.Util; using System.Collections; using System.Diagnostics.Contracts; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] [Obsolete("This type is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")] sealed public class FirstMatchCodeGroup : CodeGroup { internal FirstMatchCodeGroup() : base() { } public FirstMatchCodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy ) : base( membershipCondition, policy ) { } [System.Security.SecuritySafeCritical] // auto-generated public override PolicyStatement Resolve( Evidence evidence ) { if (evidence == null) throw new ArgumentNullException("evidence"); Contract.EndContractBlock(); object usedEvidence = null; if (PolicyManager.CheckMembershipCondition(MembershipCondition, evidence, out usedEvidence)) { PolicyStatement childPolicy = null; IEnumerator enumerator = this.Children.GetEnumerator(); while (enumerator.MoveNext()) { childPolicy = PolicyManager.ResolveCodeGroup(enumerator.Current as CodeGroup, evidence); // If the child has a policy, we are done. if (childPolicy != null) { break; } } // If any delay-evidence was used to generate this grant set, then we need to keep track of // that for potentially later forcing it to be verified. IDelayEvaluatedEvidence delayEvidence = usedEvidence as IDelayEvaluatedEvidence; bool delayEvidenceNeedsVerification = delayEvidence != null && !delayEvidence.IsVerified; PolicyStatement thisPolicy = this.PolicyStatement; // PolicyStatement getter makes a copy for us if (thisPolicy == null) { // We didn't add any permissions, but we enabled our children to be evaluated, and // therefore its grant set is dependent on any of our delay evidence. if (delayEvidenceNeedsVerification) { childPolicy = childPolicy.Copy(); childPolicy.AddDependentEvidence(delayEvidence); } return childPolicy; } else if (childPolicy != null) { // Combine the child and this policy and return it. PolicyStatement combined = thisPolicy.Copy(); if (delayEvidenceNeedsVerification) { combined.AddDependentEvidence(delayEvidence); } combined.InplaceUnion(childPolicy); return combined; } else { // Otherwise we just copy the this policy. if (delayEvidenceNeedsVerification) { thisPolicy.AddDependentEvidence(delayEvidence); } return thisPolicy; } } else { return null; } } [System.Security.SecuritySafeCritical] // auto-generated public override CodeGroup ResolveMatchingCodeGroups( Evidence evidence ) { if (evidence == null) throw new ArgumentNullException("evidence"); Contract.EndContractBlock(); 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 ); break; } } return retGroup; } else { return null; } } [System.Security.SecuritySafeCritical] // auto-generated public override CodeGroup Copy() { FirstMatchCodeGroup group = new FirstMatchCodeGroup(); 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_FirstMatch" ); } } internal override String GetTypeName() { return "System.Security.Policy.FirstMatchCodeGroup"; } } } // 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
- DynamicDocumentPaginator.cs
- EventLogException.cs
- DiscoveryClientProtocol.cs
- ColorContextHelper.cs
- WindowsScroll.cs
- MILUtilities.cs
- DiscreteKeyFrames.cs
- RemotingHelper.cs
- HttpCookieCollection.cs
- _ConnectOverlappedAsyncResult.cs
- ComponentResourceManager.cs
- Light.cs
- SqlInfoMessageEvent.cs
- OledbConnectionStringbuilder.cs
- DispatcherExceptionEventArgs.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- SelectedPathEditor.cs
- RequestSecurityToken.cs
- CapabilitiesState.cs
- SkewTransform.cs
- BaseTemplateParser.cs
- XPathNavigatorException.cs
- Page.cs
- ITextView.cs
- ResXFileRef.cs
- MaterialGroup.cs
- SafeBitVector32.cs
- SqlAggregateChecker.cs
- log.cs
- WebPartUtil.cs
- StatusBarAutomationPeer.cs
- XmlUtil.cs
- Emitter.cs
- Model3D.cs
- ValidationManager.cs
- TabItem.cs
- HtmlLink.cs
- WindowExtensionMethods.cs
- SqlTypeConverter.cs
- KnownColorTable.cs
- ToolBarDesigner.cs
- DelegatedStream.cs
- HttpsHostedTransportConfiguration.cs
- AdCreatedEventArgs.cs
- XmlSchemaSimpleType.cs
- SQLDateTime.cs
- ListViewItem.cs
- localization.cs
- EntityObject.cs
- WebResourceAttribute.cs
- View.cs
- DataBinding.cs
- SmiMetaData.cs
- TableLayoutPanel.cs
- SizeAnimation.cs
- ExpressionCopier.cs
- SqlCommand.cs
- ValueQuery.cs
- designeractionlistschangedeventargs.cs
- VisualStateGroup.cs
- SimpleTableProvider.cs
- FrameworkElementFactory.cs
- ThicknessAnimationUsingKeyFrames.cs
- WaitHandleCannotBeOpenedException.cs
- FrameworkTemplate.cs
- TransactionState.cs
- SecureConversationServiceCredential.cs
- HTMLTagNameToTypeMapper.cs
- XmlSchemaComplexContent.cs
- CardSpaceException.cs
- Int32RectConverter.cs
- AuthenticationService.cs
- BindingNavigator.cs
- ApplicationContext.cs
- EntryWrittenEventArgs.cs
- SchemaCompiler.cs
- DataGridCaption.cs
- DomainUpDown.cs
- DataControlCommands.cs
- SerializableAttribute.cs
- ClonableStack.cs
- tabpagecollectioneditor.cs
- LogRecordSequence.cs
- MethodAccessException.cs
- OleServicesContext.cs
- Style.cs
- CfgSemanticTag.cs
- SiteMapPathDesigner.cs
- PassportAuthentication.cs
- ToolStripSeparatorRenderEventArgs.cs
- UniqueConstraint.cs
- StreamGeometry.cs
- AudioFormatConverter.cs
- TdsValueSetter.cs
- NewArrayExpression.cs
- FontUnitConverter.cs
- ModelItemDictionaryImpl.cs
- OutputCacheSection.cs
- Table.cs
- XmlAggregates.cs