TypeBuilder.IsSecuritySafeCritical プロパティ

定義

現在の型がセキュリティ セーフ クリティカルであり、重要な操作を実行でき、透過的なコードからアクセスできるかどうかを示す値を取得します。Gets a value that indicates whether the current type is security-safe-critical; that is, whether it can perform critical operations and can be accessed by transparent code.

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

プロパティ値

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

適用対象

こちらもご覧ください