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