コンパイラ エラー CS0507Compiler Error CS0507

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

メソッド オーバーライドで、アクセス指定を変更しようとしています。An attempt was made to change the access specification in a method override.

Example

次の例では CS0507 が生成されます。The following sample generates CS0507.

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

Example

CS0507 は、参照されているメタデータで定義されている protected internal とマークされたメソッドを、クラスがオーバーライドしようとした場合にも発生する可能性があります。CS0507 can also occur if a class attempts to override a method marked as protected internal defined in referenced metadata. この場合、オーバーライドするメソッドは protected とマークする必要があります。In this situation, the overriding method should be marked as protected.

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

Example

次の例では CS0507 が生成されます。The following sample generates 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() {}  
}