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


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

Исключения

В этом динамическом методе отсутствует тело метода.

Комментарии

Свойства IsSecurityCritical, IsSecuritySafeCriticalи IsSecurityTransparent сообщают уровень прозрачности динамического метода, определяемый средой CLR. Сочетания этих свойств показаны в следующей таблице:

Уровень безопасности IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Critical true false false
Безопасный критический true true false
Прозрачный false false true

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

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

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

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

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

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

    Примечание

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

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

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

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

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