Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Security / Policy / FirstMatchCodeGroup.cs / 2 / 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; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] sealed public class FirstMatchCodeGroup : CodeGroup { internal FirstMatchCodeGroup() : base() { } public FirstMatchCodeGroup( IMembershipCondition membershipCondition, PolicyStatement policy ) : base( membershipCondition, policy ) { } public override PolicyStatement Resolve( Evidence evidence ) { if (evidence == null) throw new ArgumentNullException("evidence"); 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; } } 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 ); break; } } return retGroup; } else { return null; } } 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Decimal.cs
- latinshape.cs
- KeyedCollection.cs
- RectAnimationClockResource.cs
- XmlText.cs
- SpecularMaterial.cs
- JoinTreeSlot.cs
- ListView.cs
- _LoggingObject.cs
- DeflateEmulationStream.cs
- SoapObjectInfo.cs
- NotImplementedException.cs
- TableLayoutPanelDesigner.cs
- UnmanagedHandle.cs
- XmlILStorageConverter.cs
- PagePropertiesChangingEventArgs.cs
- RSAOAEPKeyExchangeFormatter.cs
- MediaElement.cs
- ThrowHelper.cs
- ConnectionsZone.cs
- ZipIOExtraFieldZip64Element.cs
- LifetimeServices.cs
- IIS7WorkerRequest.cs
- HttpResponseWrapper.cs
- ChtmlTextWriter.cs
- mediaeventargs.cs
- SharedPerformanceCounter.cs
- QueryInterceptorAttribute.cs
- NavigatingCancelEventArgs.cs
- PageParser.cs
- TraceLevelStore.cs
- ConfigurationValidatorAttribute.cs
- DataGridTable.cs
- RelationshipDetailsCollection.cs
- IdentityManager.cs
- DefaultCompensation.cs
- BreadCrumbTextConverter.cs
- MultiPageTextView.cs
- SecurityRuntime.cs
- ToolStripSystemRenderer.cs
- SimpleApplicationHost.cs
- XmlNamespaceMappingCollection.cs
- LassoSelectionBehavior.cs
- OracleBoolean.cs
- Calendar.cs
- HtmlInputControl.cs
- SoapTransportImporter.cs
- OdbcTransaction.cs
- RecognizedAudio.cs
- ThreadStaticAttribute.cs
- WriteableBitmap.cs
- BitSet.cs
- InputLanguageCollection.cs
- ImportContext.cs
- AuthenticationException.cs
- VectorKeyFrameCollection.cs
- Keywords.cs
- AffineTransform3D.cs
- PolicyConversionContext.cs
- GraphicsPath.cs
- PartBasedPackageProperties.cs
- DataKeyCollection.cs
- AttributeCollection.cs
- ListManagerBindingsCollection.cs
- EncoderNLS.cs
- TreeWalkHelper.cs
- CorrelationService.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- AnnotationComponentChooser.cs
- Script.cs
- BindingBase.cs
- AnnotationResource.cs
- VerificationException.cs
- UndirectedGraph.cs
- ContractCodeDomInfo.cs
- TcpActivation.cs
- Win32Interop.cs
- ControlCollection.cs
- SQLInt16.cs
- XPathBinder.cs
- WriterOutput.cs
- AssociationType.cs
- XmlElement.cs
- BuildManager.cs
- RbTree.cs
- PersistChildrenAttribute.cs
- CodeMemberMethod.cs
- InProcStateClientManager.cs
- GacUtil.cs
- CompoundFileReference.cs
- CodePropertyReferenceExpression.cs
- LayoutSettings.cs
- XmlSignatureManifest.cs
- MSHTMLHost.cs
- ServiceOperation.cs
- Gdiplus.cs
- ConfigXmlAttribute.cs
- HtmlTitle.cs
- thaishape.cs
- SimpleWorkerRequest.cs