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 создается при вызове динамического метода.

  • Прозрачность динамического метода, связанного с частично доверенной сборкой, зависит от того, как загружается сборка. Если сборка загружается с частичным доверием (например, в изолированный домен приложения), среда выполнения игнорирует заметки о безопасности сборки. Сборка и все её типы и члены, включая динамические методы, рассматриваются как прозрачные. Среда выполнения уделяет внимание аннотациям безопасности только если сборка с частичным доверием загружается с условиями полного доверия (например, в домен приложения по умолчанию настольного приложения). В этом случае среда выполнения назначает динамическому методу уровень прозрачности по умолчанию в соответствии с аннотациями сборки.

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

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

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