Поделиться через


TypeBuilder.IsSecurityCritical Свойство

Определение

Получает значение, которое указывает, является ли текущий тип критическим с точки зрения безопасности или надежным с точки зрения безопасности и, следовательно, может ли он выполнять важные операции.

public:
 virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean

Значение свойства

Значение true, если текущий тип является критическим с точки зрения безопасности или надежным с точки зрения безопасности; значение false, если он является прозрачным.

Исключения

Текущий динамический тип не был создан путем вызова метода CreateType().

Комментарии

Свойства IsSecurityCritical, IsSecuritySafeCriticalи IsSecurityTransparent сообщают уровень прозрачности типа, определяемый средой CLR. Сочетания этих свойств приведены в следующей таблице:

Уровень безопасности IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Critical true false false
Критический в плане безопасности true true false
Прозрачный false false true

Использовать эти свойства гораздо проще, чем просматривать заметки о безопасности для сборки и ее типов, проверять текущий уровень доверия и пытаться дублировать правила среды выполнения.

Среда выполнения начинает оценку уровней прозрачности в сборке. Например, если динамическая сборка критически важна для безопасности, заметки для типов игнорируются, а все типы являются критически важными для безопасности.

По умолчанию динамическая сборка наследует прозрачность сборки, которая ее выдает. Вы можете переопределить это значение по умолчанию, используя перегрузку AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)метода , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)или AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) и указав атрибуты безопасности. Таким образом нельзя повысить уровень безопасности. то есть прозрачный код не может выдавать критически важный для безопасности или безопасный код. Атрибуты должны указываться при создании динамической сборки или не вступают в силу до тех пор, пока сборка не будет сохранена на диске и перезагружена.

Примечание

Наследование по умолчанию ограничивается оценкой прозрачности среды выполнения. К динамической сборке атрибуты не применяются. Если вы хотите добавить атрибуты безопасности, необходимо применить их самостоятельно.

Дополнительные сведения об испускаемом отражении и прозрачности см. в разделе Проблемы безопасности в излучаемом отражении. Сведения о прозрачности см. в разделе Изменения в системе безопасности.

Применяется к

См. также раздел