Błąd kompilatora CS0507

"function1": nie można zmienić modyfikatorów dostępu podczas zastępowania "access" dziedziczonego elementu członkowskiego "function2"

Podjęto próbę zmiany specyfikacji dostępu w zastąpieniu metody.

Przykład 1

Poniższy przykład generuje plik CS0507.

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

Przykład 2

CS0507 może również wystąpić, jeśli klasa próbuje zastąpić metodę oznaczoną jako protected internal zdefiniowaną w metadanych, do których odwołuje się odwołanie. W takiej sytuacji metoda zastępowania powinna być oznaczona jako protected.

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

Poniższy przykład generuje plik 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() {}  
}