コンパイラ エラー CS0507

'function1': 'access' の継承メンバー 'function2' をオーバーライドするときに、アクセス修飾子を変更できません

メソッド オーバーライドで、アクセス指定を変更しようとしています。

例 1

次の例では CS0507 が生成されます。

// CS0507.cs  
abstract public class clx  
{  
   virtual protected void f() {}  
}  
  
public class cly : clx  
{  
   public override void f() {}   // CS0507  
   public static void Main() {}  
}  

例 2

CS0507 は、参照されているメタデータで定義されている protected internal とマークされたメソッドを、クラスがオーバーライドしようとした場合にも発生する可能性があります。 この場合、オーバーライドするメソッドは protected とマークする必要があります。

// CS0507_b.cs  
// compile with: /target:library  
abstract public class clx  
{  
   virtual protected internal void f() {}  
}  

次の例では CS0507 が生成されます。

// CS0507_c.cs  
// compile with: /reference:cs0507_b.dll  
public class cly : clx  
{  
   protected internal override void f() {}   // CS0507  
   // try the following line instead  
   // protected override void f() {}   // OK  
  
   public static void Main() {}  
}