TypeBuilder.IsSecurityCritical プロパティ

定義

現在の型がセキュリティ クリティカルまたはセキュリティ セーフ クリティカルであり、重要な操作を実行できるかどうかを示す値を取得します。

public:
 virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean

プロパティ値

現在の型がセキュリティ クリティカルまたはセキュリティ セーフ クリティカルである場合は true。現在の型が透過的な場合は false

例外

現在の動的な型は、CreateType() メソッドを呼び出して作成された型ではありません。

注釈

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

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

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

ランタイムは、アセンブリで透過性レベルの評価を開始します。 たとえば、動的アセンブリがセキュリティ クリティカルな場合、型の注釈は無視され、すべての型はセキュリティ クリティカルになります。

既定では、動的アセンブリは、それを出力するアセンブリの透過性を継承します。 この既定値をオーバーライドするには、または AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) メソッドのオーバーロードをAppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)使用し、セキュリティ属性を指定します。 これを行うことでセキュリティ レベルを昇格することはできません。つまり、透過的なコードは、セキュリティ クリティカルまたはセキュリティ セーフ クリティカルなコードを出力できません。 動的アセンブリの作成時に属性を指定する必要があります。または、アセンブリがディスクに保存されて再読み込みされるまで有効になりません。

Note

既定の継承は、ランタイムによる透過性の評価に制限されます。 動的アセンブリに属性は適用されません。 セキュリティ属性を追加する場合は、自分で適用する必要があります。

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

適用対象

こちらもご覧ください