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

例外狀況

此動態方法沒有方法主體。

備註

IsSecurityCriticalIsSecuritySafeCriticalIsSecurityTransparent 屬性會報告由 Common Language Runtime (CLR) 所決定之動態方法的透明度層級。 下表顯示這些屬性的組合:

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

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

動態方法的透明度取決於其相關聯的模組。 如果動態方法與類型而非模組相關聯,其透明度取決於包含類型的模組。 動態方法沒有安全性註釋,因此會指派相關聯模組的默認透明度。

  • 匿名裝載的動態方法一律是透明的,因為包含它們的系統提供的模組是透明的。

  • 下表說明與信任元件相關聯的動態方法透明度 (,也就是安裝在全域程式集緩存) 的強名稱元件。

    元件批注 層級 1 透明度 層級 2 透明度
    完全透明 透明 透明
    完全重要 重大 重大
    混合透明度 透明 透明
    與安全性無關 安全關鍵 重大

    例如,如果您將動態方法與 mscorlib.dll 中具有層級 2 混合透明度的類型產生關聯,則動態方法是透明的,而且無法執行關鍵程序代碼。 如需透明度層級的相關信息,請參閱 安全性透明程式代碼、層級 1 和安全性 透明程式代碼、層級 2

    注意

    將動態方法與信任層級 1 元件中與安全性無關的模組建立關聯,例如 System.dll 不允許提高信任。 如果呼叫動態方法的程式代碼授與集不包含 System.dll (的授與集,也就是呼叫動態方法時, SecurityException 會擲回完全信任) 。

  • 與部分信任元件相關聯的動態方法透明度取決於元件的載入方式。 例如,如果元件以部分信任 (載入沙盒化應用程式域) ,運行時間會忽略元件的安全性批注。 元件及其所有類型和成員,包括動態方法,都會被視為透明。 只有當部分信任元件載入完全信任 (時,運行時間才會注意安全性批注,例如,在傳統型應用程式的默認應用程式域中) 。 在此情況下,運行時間會根據元件的註釋,為方法指派預設透明度。

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

適用於

另請參閱