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


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
Critical true false false
Безопасный критический true true false
Прозрачный false false true

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

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

  • Динамические методы, размещенные в анонимном режиме, всегда прозрачны, так как предоставляемый системой модуль, содержащий их, является прозрачным.

  • Прозрачность динамического метода, связанного с доверенной сборкой (то есть сборкой со строгим именем, установленной в глобальном кэше сборок), описана в следующей таблице.

    Заметка к сборке Прозрачность уровня 1 Прозрачность уровня 2
    Полностью прозрачный Прозрачный Прозрачный
    Полностью критично Критический Критический
    Смешанная прозрачность Прозрачный Прозрачный
    Не зависящая от безопасности Критический в плане безопасности Критически важно

    Например, если связать динамический метод с типом, который находится в mscorlib.dll, который имеет смешанную прозрачность уровня 2, динамический метод будет прозрачным и не может выполнять критически важный код. Сведения об уровнях прозрачности см. в разделах Прозрачный код безопасности, уровень 1 и Прозрачный код безопасности, уровень 2.

    Примечание

    Связывание динамического метода с модулем в сборке доверенного уровня 1, которая не зависит от безопасности, например System.dll, не допускает повышения уровня доверия. Если набор предоставления кода, который вызывает динамический метод, не включает набор System.dll (то есть полное доверие), SecurityException возникает при вызове динамического метода.

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

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

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

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