TypeBuilder.IsSecurityTransparent 属性

定义

获取一个值,该值指示当前类型是否透明,且因此是否无法指定关键操作。

public:
 virtual property bool IsSecurityTransparent { bool get(); };
public override bool IsSecurityTransparent { get; }
member this.IsSecurityTransparent : bool
Public Overrides ReadOnly Property IsSecurityTransparent As Boolean

属性值

Boolean

如果此类型是安全-透明的,则为 true;否则为 false

例外

当前动态类型不是通过调用 CreateType() 方法创建的。

注解

IsSecurityCriticalIsSecuritySafeCriticalIsSecurityTransparent 属性报告由公共语言运行时 (CLR) 确定的类型的透明度级别。 下表显示了这些属性的组合:

安全级别 IsSecurityCritical IsSecurityCritical IsSecurityTransparent
严重 true false false
安全-关键 true true false
透明 false false true

使用这些属性比检查程序集及其类型的安全批注、检查当前的信任级别,以及尝试复制运行时的规则要简单得多。

运行时开始计算程序集的透明度级别。 例如,如果动态程序集是安全关键的,则类型上的批注将被忽略,并且所有类型都是安全关键的。

默认情况下,动态程序集继承发出它的程序集的透明度。 您可以使用 AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) 方法重载,并指定安全特性来重写此默认值。 您无法通过执行此操作提升安全级别;也就是说,透明代码无法发出安全关键代码或安全可靠关键代码。 创建动态程序集时必须指定属性,或在程序集保存到磁盘并重新加载后,它们才会生效。

备注

默认继承限制为运行时的透明度计算。 没有属性应用于动态程序集。 如果要添加安全属性,则必须自行应用这些属性。

有关反射发出和透明度的详细信息,请参阅 反射发出中的安全问题。 有关透明度的信息,请参阅 安全更改

适用于

另请参阅