MethodBase.IsSecurityCritical 属性

定义

获取一个值,该值指示当前方法或构造函数在当前信任级别上是安全关键的还是安全可靠关键的,因此可以执行关键操作。

C#
public virtual bool IsSecurityCritical { get; }

属性值

如果当前方法或构造函数在当前信任级别上是安全关键的或安全可靠关键的,则为 true;如果它是透明的,则为 false

注解

IsSecurityCriticalIsSecuritySafeCriticalIsSecurityTransparent 属性报告方法或构造函数在其当前信任级别(由公共语言运行时 (CLR) 确定)的透明度级别。 下表显示了这些属性的组合:

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

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

重要

对于部分信任程序集,此属性的值取决于程序集的当前信任级别。 如果程序集加载到部分受信任的应用程序域 (例如,) 沙盒应用程序域,运行时将忽略程序集的安全注释。 程序集及其所有类型都被视为透明。 仅当该程序集加载到完全受信任的应用程序域 (例如,在桌面应用程序) 的默认应用程序域中时,运行时才会注意部分信任程序集的安全注释。 相比之下,受信任的程序集 (即,安装在全局程序集缓存) 中的强名称程序集始终以完全信任方式加载,而不考虑应用程序域的信任级别,因此其当前信任级别始终完全受信任。 可以使用 和 AppDomain.IsFullyTrusted 属性确定程序集和应用程序域Assembly.IsFullyTrusted的当前信任级别。

有关反射和透明度的详细信息,请参阅 反射的安全注意事项。 有关透明度的信息,请参阅 安全更改

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅