TypeBuilder.IsSecurityCritical プロパティ

定義

現在の型がセキュリティ クリティカルまたはセキュリティ セーフ クリティカルであり、重要な操作を実行できるかどうかを示す値を取得します。Gets a value that indicates whether the current type is security-critical or security-safe-critical, and therefore can perform critical operations.

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

プロパティ値

現在の型がセキュリティ クリティカルまたはセキュリティ セーフ クリティカルである場合は true。現在の型が透過的な場合は falsetrue if the current type is security-critical or security-safe-critical; false if it is transparent.

例外

現在の動的な型は、CreateType() メソッドを呼び出して作成された型ではありません。The current dynamic type has not been created by calling the CreateType() method.

注釈

@No__t-0、IsSecuritySafeCritical、および IsSecurityTransparent の各プロパティは、共通言語ランタイム (CLR) によって決定される型の透明度レベルを報告します。The IsSecurityCritical, IsSecuritySafeCritical, and IsSecurityTransparent properties report the transparency level of the type, as determined by the common language runtime (CLR). これらのプロパティの組み合わせを次の表に示します。The combinations of these properties are shown in the following table:

セキュリティ レベルSecurity level IsSecurityCriticalIsSecurityCritical IsSecuritySafeCriticalIsSecuritySafeCritical IsSecurityTransparentIsSecurityTransparent
重大Critical true false false
セーフ クリティカルSafe-critical true true false
透明Transparent false false true

これらのプロパティを使用する方が、アセンブリとその型のセキュリティの注釈を調べたり、現在の信頼レベルを確認したり、ランタイムの規則を複製したりするより、はるかに簡単です。Using these properties is much simpler than examining the security annotations of an assembly and its types, checking the current trust level, and attempting to duplicate the runtime's rules.

ランタイムは、アセンブリでの透過性レベルの評価を開始します。The runtime begins evaluating transparency levels at the assembly. たとえば、動的アセンブリがセキュリティクリティカルである場合、型の注釈は無視され、すべての型はセキュリティクリティカルになります。For example, if the dynamic assembly is security-critical, annotations on types are ignored, and all types are security-critical.

既定では、動的アセンブリは、それを出力するアセンブリの透過性を継承します。By default, a dynamic assembly inherits the transparency of the assembly that emits it. この既定値をオーバーライドするには、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>) メソッドオーバーロードを使用し、セキュリティ属性を指定します。You can override this default by using the AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>), AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>), or AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) method overload and specifying security attributes. これにより、セキュリティレベルを昇格することはできません。つまり、透過的コードは、セキュリティクリティカルまたはセキュリティセーフクリティカルなコードを生成できません。You cannot elevate security levels by doing this; that is, transparent code cannot emit security-critical or security-safe-critical code. 動的アセンブリを作成するときに属性を指定する必要があります。そうしないと、アセンブリがディスクに保存されて再度読み込まれるまで、属性を有効にすることはできません。Attributes must be specified when the dynamic assembly is created, or they do not take effect until the assembly has been saved to disk and reloaded.

注意

既定の継承は、ランタイムによる透過性の評価に限定されます。Default inheritance is limited to the runtime's evaluation of transparency. 動的アセンブリに適用される属性はありません。No attributes are applied to the dynamic assembly. セキュリティ属性を追加する場合は、それらを自分で適用する必要があります。If you want to add security attributes, you must apply them yourself.

リフレクション出力と透明度の詳細については、「リフレクション出力のセキュリティの問題」を参照してください。For more information about reflection emit and transparency, see Security Issues in Reflection Emit. 透明度の詳細については、「セキュリティの変更」を参照してください。For information about transparency, see Security Changes.

適用対象

こちらもご覧ください