Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Policy / EvidenceTypeDescriptor.cs / 1305376 / EvidenceTypeDescriptor.cs
// ==--== // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // using System; using System.Diagnostics; using System.Diagnostics.Contracts; using System.Runtime.Serialization; namespace System.Security.Policy { ////// Descriptor stored in the Evidence collection to detail the information we have about a type of /// evidence. This descriptor also stores any evidence that's been generated of the specific type. /// [Serializable] internal sealed class EvidenceTypeDescriptor { [NonSerialized] private bool m_hostCanGenerate; [NonSerialized] private bool m_generated; private EvidenceBase m_hostEvidence; private EvidenceBase m_assemblyEvidence; // EvidenceTypeDescriptors are stored in Evidence indexed by the type they describe, so this // information is redundant. We keep it around in checked builds to help debugging, but we can drop // it from retial builds. #if _DEBUG [NonSerialized] private Type m_evidenceType; #endif // _DEBUG public EvidenceTypeDescriptor() { } ////// Make a deep copy of a type descriptor /// private EvidenceTypeDescriptor(EvidenceTypeDescriptor descriptor) { Contract.Assert(descriptor != null); m_hostCanGenerate = descriptor.m_hostCanGenerate; if (descriptor.m_assemblyEvidence != null) { m_assemblyEvidence = descriptor.m_assemblyEvidence.Clone() as EvidenceBase; } if (descriptor.m_hostEvidence != null) { m_hostEvidence = descriptor.m_hostEvidence.Clone() as EvidenceBase; } #if _DEBUG m_evidenceType = descriptor.m_evidenceType; #endif // _DEBUG } ////// Evidence of this type supplied by the assembly /// public EvidenceBase AssemblyEvidence { get { return m_assemblyEvidence; } set { Contract.Assert(value != null); #if _DEBUG Contract.Assert(CheckEvidenceType(value), "Incorrect type of AssemblyEvidence set"); #endif m_assemblyEvidence = value; } } ////// Flag indicating that we've already attempted to generate this type of evidence /// public bool Generated { get { return m_generated; } set { Contract.Assert(value, "Attempt to clear the Generated flag"); m_generated = value; } } ////// Has the HostSecurityManager has told us that it can potentially generate evidence of this type /// public bool HostCanGenerate { get { return m_hostCanGenerate; } set { Contract.Assert(value, "Attempt to clear HostCanGenerate flag"); m_hostCanGenerate = value; } } ////// Evidence of this type supplied by the CLR or the host /// public EvidenceBase HostEvidence { get { return m_hostEvidence; } set { Contract.Assert(value != null); #if _DEBUG Contract.Assert(CheckEvidenceType(value), "Incorrect type of HostEvidence set"); #endif m_hostEvidence = value; } } #if _DEBUG ////// Verify that evidence being stored in this descriptor is of the correct type /// private bool CheckEvidenceType(EvidenceBase evidence) { Contract.Assert(evidence != null); ILegacyEvidenceAdapter legacyAdapter = evidence as ILegacyEvidenceAdapter; Type storedType = legacyAdapter == null ? evidence.GetType() : legacyAdapter.EvidenceType; return m_evidenceType == null || m_evidenceType.IsAssignableFrom(storedType); } #endif // _DEBUG ////// Make a deep copy of this descriptor /// public EvidenceTypeDescriptor Clone() { return new EvidenceTypeDescriptor(this); } #if _DEBUG ////// Set the type that this evidence descriptor refers to. /// internal void SetEvidenceType(Type evidenceType) { Contract.Assert(evidenceType != null); Contract.Assert(m_evidenceType == null, "Attempt to reset evidence type"); m_evidenceType = evidenceType; } #endif // _DEBUG } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==--== // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // using System; using System.Diagnostics; using System.Diagnostics.Contracts; using System.Runtime.Serialization; namespace System.Security.Policy { ////// Descriptor stored in the Evidence collection to detail the information we have about a type of /// evidence. This descriptor also stores any evidence that's been generated of the specific type. /// [Serializable] internal sealed class EvidenceTypeDescriptor { [NonSerialized] private bool m_hostCanGenerate; [NonSerialized] private bool m_generated; private EvidenceBase m_hostEvidence; private EvidenceBase m_assemblyEvidence; // EvidenceTypeDescriptors are stored in Evidence indexed by the type they describe, so this // information is redundant. We keep it around in checked builds to help debugging, but we can drop // it from retial builds. #if _DEBUG [NonSerialized] private Type m_evidenceType; #endif // _DEBUG public EvidenceTypeDescriptor() { } ////// Make a deep copy of a type descriptor /// private EvidenceTypeDescriptor(EvidenceTypeDescriptor descriptor) { Contract.Assert(descriptor != null); m_hostCanGenerate = descriptor.m_hostCanGenerate; if (descriptor.m_assemblyEvidence != null) { m_assemblyEvidence = descriptor.m_assemblyEvidence.Clone() as EvidenceBase; } if (descriptor.m_hostEvidence != null) { m_hostEvidence = descriptor.m_hostEvidence.Clone() as EvidenceBase; } #if _DEBUG m_evidenceType = descriptor.m_evidenceType; #endif // _DEBUG } ////// Evidence of this type supplied by the assembly /// public EvidenceBase AssemblyEvidence { get { return m_assemblyEvidence; } set { Contract.Assert(value != null); #if _DEBUG Contract.Assert(CheckEvidenceType(value), "Incorrect type of AssemblyEvidence set"); #endif m_assemblyEvidence = value; } } ////// Flag indicating that we've already attempted to generate this type of evidence /// public bool Generated { get { return m_generated; } set { Contract.Assert(value, "Attempt to clear the Generated flag"); m_generated = value; } } ////// Has the HostSecurityManager has told us that it can potentially generate evidence of this type /// public bool HostCanGenerate { get { return m_hostCanGenerate; } set { Contract.Assert(value, "Attempt to clear HostCanGenerate flag"); m_hostCanGenerate = value; } } ////// Evidence of this type supplied by the CLR or the host /// public EvidenceBase HostEvidence { get { return m_hostEvidence; } set { Contract.Assert(value != null); #if _DEBUG Contract.Assert(CheckEvidenceType(value), "Incorrect type of HostEvidence set"); #endif m_hostEvidence = value; } } #if _DEBUG ////// Verify that evidence being stored in this descriptor is of the correct type /// private bool CheckEvidenceType(EvidenceBase evidence) { Contract.Assert(evidence != null); ILegacyEvidenceAdapter legacyAdapter = evidence as ILegacyEvidenceAdapter; Type storedType = legacyAdapter == null ? evidence.GetType() : legacyAdapter.EvidenceType; return m_evidenceType == null || m_evidenceType.IsAssignableFrom(storedType); } #endif // _DEBUG ////// Make a deep copy of this descriptor /// public EvidenceTypeDescriptor Clone() { return new EvidenceTypeDescriptor(this); } #if _DEBUG ////// Set the type that this evidence descriptor refers to. /// internal void SetEvidenceType(Type evidenceType) { Contract.Assert(evidenceType != null); Contract.Assert(m_evidenceType == null, "Attempt to reset evidence type"); m_evidenceType = evidenceType; } #endif // _DEBUG } } // 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
- _TransmitFileOverlappedAsyncResult.cs
- HighlightComponent.cs
- SystemColorTracker.cs
- HotSpotCollection.cs
- CompositeControlDesigner.cs
- COM2PropertyDescriptor.cs
- DebugView.cs
- GroupByQueryOperator.cs
- VirtualDirectoryMapping.cs
- ExclusiveTcpListener.cs
- ListBindingHelper.cs
- IndentedTextWriter.cs
- CodeThrowExceptionStatement.cs
- TextLine.cs
- login.cs
- XmlUnspecifiedAttribute.cs
- MemberHolder.cs
- ProxyHwnd.cs
- GenericPrincipal.cs
- X509CertificateTokenFactoryCredential.cs
- DrawingBrush.cs
- InvocationExpression.cs
- NodeLabelEditEvent.cs
- DateTimeFormat.cs
- XhtmlBasicPageAdapter.cs
- NativeRecognizer.cs
- PropertyDescriptorCollection.cs
- EncryptedPackageFilter.cs
- XmlDocumentType.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- EntryWrittenEventArgs.cs
- ManagementObject.cs
- AssociationTypeEmitter.cs
- SubtreeProcessor.cs
- WinInet.cs
- SizeF.cs
- PenLineCapValidation.cs
- DataGridViewRowsAddedEventArgs.cs
- XmlComment.cs
- WebScriptClientGenerator.cs
- StorageInfo.cs
- StorageBasedPackageProperties.cs
- CompareInfo.cs
- ReliabilityContractAttribute.cs
- MediaTimeline.cs
- ExceptionUtil.cs
- SafeCryptoHandles.cs
- ListControl.cs
- PrintDialog.cs
- TaskForm.cs
- CustomSignedXml.cs
- MessageSecurityOverHttpElement.cs
- DataGridColumnCollection.cs
- GAC.cs
- WebPartEditorOkVerb.cs
- CookieProtection.cs
- SpotLight.cs
- XmlSerializationReader.cs
- Accessible.cs
- SyndicationSerializer.cs
- ActivityExecutor.cs
- StringOutput.cs
- StorageFunctionMapping.cs
- ToolStripSettings.cs
- MouseButtonEventArgs.cs
- ButtonBaseAdapter.cs
- GlyphElement.cs
- WebSysDefaultValueAttribute.cs
- RepeaterCommandEventArgs.cs
- BamlLocalizer.cs
- SqlNamer.cs
- FacetValueContainer.cs
- HtmlElementEventArgs.cs
- Pts.cs
- Object.cs
- EntityDataSourceContextDisposingEventArgs.cs
- WorkflowInstanceContextProvider.cs
- FlowDocument.cs
- SecurityMessageProperty.cs
- CodeDelegateCreateExpression.cs
- HttpCacheVaryByContentEncodings.cs
- ModelFunctionTypeElement.cs
- PropertyGridDesigner.cs
- TargetException.cs
- SqlConnectionString.cs
- codemethodreferenceexpression.cs
- SaveCardRequest.cs
- CodeDelegateCreateExpression.cs
- XpsFilter.cs
- XmlSerializableWriter.cs
- BufferBuilder.cs
- XmlNodeChangedEventManager.cs
- ItemDragEvent.cs
- BulletDecorator.cs
- DataGridSortCommandEventArgs.cs
- TerminatingOperationBehavior.cs
- DataGridRowHeader.cs
- TraceContext.cs
- XmlToDatasetMap.cs
- XmlSchemaAppInfo.cs