TypeBuilder.IsSecurityTransparent プロパティ

定義

現在の型が透過的であり、重要な操作を実行できないかどうかを示す値を取得します。

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

プロパティ値

Boolean

型が透過的セキュリティの場合は、true。それ以外の場合は、false

例外

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

注釈

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

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

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

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

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

注意

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

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

適用対象

こちらもご覧ください