DynamicMethod.IsSecurityTransparent 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得值,這個值表示目前動態方法在目前信任層級上是否為安全性透明,因此無法執行重要作業。
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 屬性會報告由 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 會擲回完全信任) 。
與部分信任元件相關聯的動態方法透明度取決於元件的載入方式。 例如,如果元件以部分信任 (載入沙盒化應用程式域) ,運行時間會忽略元件的安全性批注。 元件及其所有類型和成員,包括動態方法,都會被視為透明。 只有當部分信任元件載入完全信任 (時,運行時間才會注意安全性批注,例如,在傳統型應用程式的默認應用程式域中) 。 在此情況下,運行時間會根據元件的註釋,為方法指派預設透明度。
如需反映發出和透明度的詳細資訊,請參閱 反映發出中的安全性問題。 如需透明度的相關信息,請參閱 安全性變更。