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 |
|---|---|---|---|
| Критически важно | true |
false |
false |
| Критически безопасное | true |
true |
false |
| Transparent | 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>) перегрузки метода и указания атрибутов безопасности. Вы не можете повысить уровень безопасности, выполнив это. То есть прозрачный код не может выдавать критически важный или безопасный для безопасности код. Атрибуты необходимо указать при создании динамической сборки или они не вступают в силу, пока сборка не будет сохранена на диске и перезагрузена.
Note
Наследование по умолчанию ограничено оценкой прозрачности среды выполнения. К динамической сборке атрибуты не применяются. Если вы хотите добавить атрибуты безопасности, их необходимо применить самостоятельно.
Для получения дополнительной информации об эмиссии отражения и прозрачности см. в разделе "Проблемы безопасности в эмиссии отражения". Сведения о прозрачности см. в разделе "Изменения безопасности".