MethodBase.IsSecurityCritical プロパティ


現在のメソッドまたはコンストラクターが、現在の信頼レベルでセキュリティ クリティカルまたはセキュリティ セーフ クリティカルであり、重要な操作を実行できるかどうかを示す値を取得します。Gets a value that indicates whether the current method or constructor is security-critical or security-safe-critical at the current trust level, and therefore can perform critical operations.

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



現在のメソッドまたはコンストラクターが、現在の信頼レベルでセキュリティ クリティカルまたはセキュリティ セーフ クリティカルである場合は true。透過的である場合は falsetrue if the current method or constructor is security-critical or security-safe-critical at the current trust level; false if it is transparent.


IsSecurityCriticalIsSecuritySafeCritical 、およびの IsSecurityTransparent 各プロパティは、共通言語ランタイム (CLR) によって決定された、現在の信頼レベルでのメソッドまたはコンストラクターの透明度レベルを報告します。The IsSecurityCritical, IsSecuritySafeCritical, and IsSecurityTransparent properties report the transparency level of the method or constructor at its current trust level, 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 and members, checking the current trust level, and attempting to duplicate the runtime's rules.


部分信頼アセンブリの場合、このプロパティの値は、アセンブリの現在の信頼レベルによって異なります。For partial-trust assemblies, the value of this property depends on the current trust level of the assembly. アセンブリが部分的に信頼されたアプリケーションドメイン (たとえば、サンドボックス化されたアプリケーションドメイン) に読み込まれる場合、ランタイムは、アセンブリのセキュリティ注釈を無視します。If the assembly is loaded into a partially trusted application domain (for example, into a sandboxed application domain), the runtime ignores the security annotations of the assembly. アセンブリとそのすべての型は透過的として扱われます。The assembly and all its types are treated as transparent. ランタイムは、アセンブリが完全に信頼されたアプリケーションドメイン (たとえば、デスクトップアプリケーションの既定のアプリケーションドメイン) に読み込まれた場合にのみ、部分信頼アセンブリのセキュリティの注釈に注意します。The runtime pays attention to the security annotations of a partial-trust assembly only when that assembly is loaded into a fully trusted application domain (for example, into the default application domain of a desktop application). これに対し、信頼されたアセンブリ (グローバルアセンブリキャッシュにインストールされる厳密な名前のアセンブリ) は、アプリケーションドメインの信頼レベルに関係なく、常に完全信頼で読み込まれます。したがって、現在の信頼レベルは常に完全に信頼されます。By contrast, a trusted assembly (that is, a strong-named assembly that is installed in the global assembly cache) is always loaded with full trust regardless of the trust level of the application domain, so its current trust level is always fully trusted. アセンブリとアプリケーションドメインの現在の信頼レベルは、プロパティとプロパティを使用して確認でき Assembly.IsFullyTrusted AppDomain.IsFullyTrusted ます。You can determine the current trust levels of assemblies and application domains by using the Assembly.IsFullyTrusted and AppDomain.IsFullyTrusted properties.

リフレクションと透明度の詳細については、「 リフレクションのセキュリティに関する考慮事項」を参照してください。For more information about reflection and transparency, see Security Considerations for Reflection. 透明度の詳細については、「 セキュリティの変更」を参照してください。For information about transparency, see Security Changes.