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

例外

動的メソッドにメソッド本体がありません。

注釈

IsSecuritySafeCritical、および の各プロパティはIsSecurityCriticalIsSecurityTransparent共通言語ランタイム (CLR) によって決定される動的メソッドの透過性レベルを報告します。 これらのプロパティの組み合わせを次の表に示します。

セキュリティ レベル IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
重大 true false false
セーフ クリティカル true true false
透明 false false true

これらのプロパティを使用する方が、アセンブリとその型のセキュリティの注釈を調べたり、現在の信頼レベルを確認したり、ランタイムの規則を複製したりするより、はるかに簡単です。

動的メソッドの透過性は、関連付けられているモジュールによって異なります。 動的メソッドがモジュールではなく型に関連付けられている場合、その透過性は、型を含むモジュールによって異なります。 動的メソッドにはセキュリティ注釈がないため、関連付けられたモジュールの既定の透過性が割り当てられます。

  • 匿名でホストされる動的メソッドは、それらを含むシステム提供のモジュールが透過的であるため、常に透過的です。

  • 信頼されたアセンブリ (グローバル アセンブリ キャッシュにインストールされている厳密な名前付きアセンブリ) に関連付けられている動的メソッドの透過性を次の表に示します。

    アセンブリ注釈 レベル 1 の透過性 レベル 2 の透明度
    完全に透明 透明 透明
    完全にクリティカル 重大 重大
    混合透明度 透明 透明
    セキュリティに依存しない セーフ クリティカル 重大

    たとえば、動的メソッドを、レベル 2 の透過性が混在するmscorlib.dll内の型に関連付ける場合、動的メソッドは透過的であり、重要なコードを実行できません。 透過性レベルの詳細については、「セキュリティ透過的コード」、「レベル 1」、「セキュリティ透過的コード、レベル 2」を参照してください。

    Note

    System.dllなど、セキュリティに依存しない信頼されたレベル 1 アセンブリ内のモジュールに動的メソッドを関連付けることは、信頼の昇格を許可しません。 動的メソッドを呼び出すコードの許可セットにSystem.dllの許可セットが含まれていない場合 (つまり、完全信頼) SecurityException 、動的メソッドが呼び出されたときにスローされます。

  • 部分的に信頼されたアセンブリに関連付けられている動的メソッドの透過性は、アセンブリの読み込み方法によって異なります。 アセンブリが部分信頼 (たとえば、セキュリティで保護されたアプリケーション ドメイン) で読み込まれる場合、ランタイムはアセンブリのセキュリティ注釈を無視します。 アセンブリとそのすべての型とメンバー (動的メソッドを含む) は透過的として扱われます。 ランタイムは、部分信頼アセンブリが完全信頼 (デスクトップ アプリケーションの既定のアプリケーション ドメインなど) で読み込まれる場合にのみ、セキュリティ注釈に注意を払います。 その場合、ランタイムは動的メソッドに、アセンブリの注釈に従ってメソッドの既定の透過性を割り当てます。

リフレクション出力と透明度の詳細については、「リフレクション出力 のセキュリティの問題」を参照してください。 透明性の詳細については、「 セキュリティの変更」を参照してください。

適用対象

こちらもご覧ください