TypeBuilder.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

例外狀況

尚未呼叫 CreateType() 方法建立目前動態類型。

備註

IsSecurityCriticalIsSecuritySafeCriticalIsSecurityTransparent 屬性會報告類型的透明度層級,如 Common Language Runtime (CLR) 所決定。 下表顯示這些屬性的組合:

安全性層級 IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
重大 true false false
安全關鍵 true true false
透明 false false true

使用這些屬性會比檢查組件及其類型的安全性註釋、檢查目前的信任層級,以及嘗試複製執行階段規則更簡單。

執行時間會開始評估元件的透明度層級。 例如,如果動態元件為安全性關鍵,則會忽略類型上的批註,而且所有類型都是安全性關鍵。

根據預設,動態元件會繼承發出它的元件透明度。 您可以使用 、 AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) 方法多載並指定安全性屬性,覆 AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>) 寫此預設值。 您無法藉由執行此動作來提升安全性層級;也就是說,透明程式碼無法發出安全性關鍵或安全性安全關鍵程式碼。 建立動態元件時,必須指定屬性,否則必須在元件儲存到磁片並重載之前生效。

注意

預設繼承僅限於執行時間的透明度評估。 動態元件不會套用任何屬性。 如果您想要新增安全性屬性,您必須自行套用這些屬性。

如需反映發出和透明度的詳細資訊,請參閱 反映發出中的安全性問題。 如需透明度的相關資訊,請參閱 安全性變更

適用於

另請參閱