DynamicMethod.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 Значение , если это прозрачно.
Исключения
Динамический метод не имеет текста метода.
Комментарии
Значения свойств IsSecurityCritical, IsSecuritySafeCritical и IsSecurityTransparent сообщают о уровне прозрачности динамического метода, определяемом общей языковой средой выполнения (CLR). Сочетания этих свойств показаны в следующей таблице:
| Уровень безопасности | IsSecurityCritical | IsSecuritySafeCritical | IsSecurityTransparent |
|---|---|---|---|
| Критически важно | true |
false |
false |
| Безопасно-критический | true |
true |
false |
| Transparent | false |
false |
true |
Использование этих свойств гораздо проще, чем изучение заметок безопасности сборки и его типов, проверки текущего уровня доверия и попытки дублировать правила среды выполнения.
Прозрачность динамического метода зависит от связанного модуля. Если динамический метод связан с типом, а не модулем, его прозрачность зависит от модуля, содержащего тип. Динамические методы не имеют заметок безопасности, поэтому они назначают прозрачность по умолчанию для связанного модуля.
Анонимные динамические методы всегда прозрачны, так как предоставленный системой модуль, содержащий их, является прозрачным.
Прозрачность динамического метода, связанного с доверенной сборкой (т. е. строго именованной сборкой, установленной в глобальном кэше сборок), описана в следующей таблице.
Заметка о сборке Прозрачность уровня 1 Прозрачность уровня 2 Полностью прозрачный Transparent Transparent Полностью критически важный Критически важно Критически важно Смешанная прозрачность Transparent Transparent Независимость от конкретных мер безопасности Критически безопасное Критически важно Например, если вы связываете динамический метод с типом, который находится в mscorlib.dll, который имеет уровень 2 смешанной прозрачности, динамический метод является прозрачным и не может выполнять критически важный код. Сведения о уровнях прозрачности см. в разделе Security-Transparent Code, Level 1 and Security-Transparent Code, Level 2.
Note
Связывание динамического метода с модулем в сборке доверенного уровня 1, которая не зависит от безопасности, например System.dll, не разрешает повышение доверия. Если набор предоставления кода, вызывающего динамический метод, не включает набор предоставления System.dll (то есть полное доверие), SecurityException создается при вызове динамического метода.
Прозрачность динамического метода, связанного с частично доверенной сборкой, зависит от того, как загружается сборка. Если сборка загружается с частичным доверием (например, в изолированный домен приложения), среда выполнения игнорирует заметки о безопасности сборки. Сборка и все её типы и члены, включая динамические методы, рассматриваются как прозрачные. Среда выполнения уделяет внимание аннотациям безопасности только если сборка с частичным доверием загружается с условиями полного доверия (например, в домен приложения по умолчанию настольного приложения). В этом случае среда выполнения назначает динамическому методу уровень прозрачности по умолчанию в соответствии с аннотациями сборки.
Для получения дополнительной информации об эмиссии отражения и прозрачности см. в разделе "Проблемы безопасности в эмиссии отражения". Сведения о прозрачности см. в разделе "Изменения безопасности".