Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Policy / FirstMatchCodeGroup.cs / 1 / 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.Util; using System.Security; 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"); if (this.MembershipCondition.Check( evidence )) { PolicyStatement childPolicy = null; IEnumerator enumerator = this.Children.GetEnumerator(); while (enumerator.MoveNext()) { childPolicy = ((CodeGroup)enumerator.Current).Resolve( evidence ); // If the child has a policy, we are done. if (childPolicy != null) break; } PolicyStatement thisPolicy = this.PolicyStatement; if (thisPolicy == null) { return childPolicy; } else if (childPolicy != null) { // Combine the child and this policy and return it. PolicyStatement combined = new PolicyStatement(); combined.SetPermissionSetNoCopy( thisPolicy.GetPermissionSetNoCopy().Union( childPolicy.GetPermissionSetNoCopy() ) ); // if both this group and matching child group are exclusive we need to throw an exception if (((thisPolicy.Attributes & childPolicy.Attributes) & PolicyStatementAttribute.Exclusive) == PolicyStatementAttribute.Exclusive) throw new PolicyException( Environment.GetResourceString( "Policy_MultipleExclusive" ) ); combined.Attributes = thisPolicy.Attributes | childPolicy.Attributes; return combined; } else { // Otherwise we just copy the this policy. 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 ); 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"; } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TakeQueryOptionExpression.cs
- SecurityUtils.cs
- UserControlParser.cs
- IsolatedStorageFile.cs
- DataKeyCollection.cs
- PropertyValueUIItem.cs
- SqlCaseSimplifier.cs
- ChoiceConverter.cs
- FontSource.cs
- DictionaryBase.cs
- ValidationSummary.cs
- VisualCollection.cs
- EncryptedData.cs
- HtmlSelect.cs
- RangeValuePatternIdentifiers.cs
- ClientFormsIdentity.cs
- MSAANativeProvider.cs
- FilteredDataSetHelper.cs
- UserValidatedEventArgs.cs
- XsdCachingReader.cs
- SqlDataAdapter.cs
- PropertyDescriptorComparer.cs
- DebugView.cs
- ClientBuildManager.cs
- ConfigurationManagerInternalFactory.cs
- FrameDimension.cs
- XmlArrayItemAttributes.cs
- Enum.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- AutomationFocusChangedEventArgs.cs
- ListenerElementsCollection.cs
- LassoHelper.cs
- SystemInfo.cs
- HandlerBase.cs
- SingleObjectCollection.cs
- SerializationSectionGroup.cs
- UnmanagedMemoryStream.cs
- ServiceNameElementCollection.cs
- EventData.cs
- CellRelation.cs
- QualificationDataAttribute.cs
- DocumentViewerAutomationPeer.cs
- ColorConverter.cs
- EncodingNLS.cs
- CodeDOMUtility.cs
- ColumnPropertiesGroup.cs
- Ipv6Element.cs
- MaskedTextBox.cs
- Drawing.cs
- OracleDateTime.cs
- CompilationLock.cs
- BrowserCapabilitiesFactory.cs
- ControlPropertyNameConverter.cs
- OrderByLifter.cs
- WindowsScrollBar.cs
- PostBackOptions.cs
- FlowDecisionLabelFeature.cs
- MethodSet.cs
- CompoundFileDeflateTransform.cs
- BaseTreeIterator.cs
- RegexStringValidatorAttribute.cs
- SortedDictionary.cs
- LineUtil.cs
- Application.cs
- CSharpCodeProvider.cs
- AnnotationDocumentPaginator.cs
- DirectionalLight.cs
- ImageBrush.cs
- FileBasedResourceGroveler.cs
- PageCodeDomTreeGenerator.cs
- PropertyToken.cs
- SessionIDManager.cs
- ReadOnlyHierarchicalDataSource.cs
- WebServiceReceiveDesigner.cs
- PointAnimationUsingKeyFrames.cs
- PartialArray.cs
- AppDomainCompilerProxy.cs
- InstanceHandleConflictException.cs
- EventLogPermission.cs
- AuthenticationSection.cs
- DLinqAssociationProvider.cs
- RpcAsyncResult.cs
- Activation.cs
- BitmapInitialize.cs
- XmlDesigner.cs
- SoapProcessingBehavior.cs
- InstanceOwner.cs
- Int32AnimationUsingKeyFrames.cs
- COM2ComponentEditor.cs
- CompilationRelaxations.cs
- __ConsoleStream.cs
- SrgsNameValueTag.cs
- CardSpacePolicyElement.cs
- exports.cs
- DllHostedComPlusServiceHost.cs
- RoleGroup.cs
- NullableBoolConverter.cs
- StateDesigner.TransitionInfo.cs
- SQLDateTimeStorage.cs
- BevelBitmapEffect.cs