CA2135: レベル 2 のアセンブリは LinkDemand を含んではならない
TypeName |
SecurityRuleSetLevel2MethodsShouldNotBeProtectedWithLinkDemands |
CheckId |
CA2135 |
カテゴリ |
Microsoft.Security |
互換性に影響する変更点 |
あり |
原因
クラスまたはクラスのメンバーが、レベル 2 のセキュリティを使用するアプリケーションで LinkDemand を使用しています。
規則の説明
LinkDemands は、レベル 2 のセキュリティ規則セットでは使用が推奨されていません。 LinkDemands を使用して Just-In-Time (JIT) コンパイル時にセキュリティを適用するのではなく、メソッド、型、およびフィールドに SecurityCriticalAttribute 属性を設定します。
違反の修正方法
この規則違反を修正するには、LinkDemand 属性を削除し、型またはメンバーに SecurityCriticalAttribute 属性を設定します。
警告を抑制する状況
この規則による警告は抑制しないでください。
使用例
次の例では、LinkDemand を削除し、メソッドに SecurityCriticalAttribute 属性を設定する必要があります。
using System;
using System.Security;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class MethodsProtectedWithLinkDemandsClass
{
// CA2135 violation - the LinkDemand should be removed, and the method marked [SecurityCritical] instead
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
public void ProtectedMethod()
{
}
}
}