英語で読む

次の方法で共有


コンパイラの警告 (レベル 1) CS0688

'method1' はリンク要求を含んでいますが、リンク要求を含んでいない 'method2' をオーバーライドまたは実装します。 セキュリティに問題が発生する可能性があります。

派生クラス メソッドに設定されているリンク要求は、基底クラス メソッドを呼び出すと簡単に迂回できます。 このセキュリティ ホールをふさぐには、基底クラス メソッドでもリンク要求を使用する必要があります。 詳しくは、「Demand とLinkDemand」をご覧ください。

次の例では CS0688 が生成されます。 基底クラスを変更せずにこの警告を解決するには、オーバーライドするメソッドからセキュリティ属性を削除します。 この操作によって、セキュリティ上の問題は解決しません。

C#
// CS0688.cs  
// compile with: /W:1  
using System;  
using System.Security.Permissions;  
  
class Base
{  
    //Uncomment the following line to close the security hole  
    //[FileIOPermission(SecurityAction.LinkDemand, All=@"C:\\")]  
    public virtual void DoScaryFileStuff()  
    {  
    }  
}  
  
class Derived: Base  
{  
    [FileIOPermission(SecurityAction.LinkDemand, All=@"C:\\")] // CS0688  
    public override void DoScaryFileStuff()  
    {  
    }  
    static void Main()  
    {  
    }  
}