TypeBuilder.IsSecuritySafeCritical Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, указывающее, является ли текущий тип критически важным для безопасности; т. е. может ли он выполнять критически важные операции и получить доступ к ним с помощью прозрачного кода.
public:
virtual property bool IsSecuritySafeCritical { bool get(); };
public override bool IsSecuritySafeCritical { get; }
member this.IsSecuritySafeCritical : bool
Public Overrides ReadOnly Property IsSecuritySafeCritical 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
Наследование по умолчанию ограничено оценкой прозрачности среды выполнения. К динамической сборке атрибуты не применяются. Если вы хотите добавить атрибуты безопасности, их необходимо применить самостоятельно.
Для получения дополнительной информации об эмиссии отражения и прозрачности см. в разделе "Проблемы безопасности в эмиссии отражения". Сведения о прозрачности см. в разделе "Изменения безопасности".