Compilerfehler CS0507

„Funktion1“: Die Zugriffsmodifizierer können beim Überschreiben des geerbten „Zugriff“-Members „Funktion2“ nicht geändert werden.

Es wurde der Versuch unternommen, die Zugriffsspezifikation in einer Methodenüberschreibung zu ändern.

Beispiel 1

Im folgenden Beispiel wird CS0507 generiert.

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

Beispiel 2

CS0507 kann auch auftreten, wenn eine Klasse eine Methode zu überschreiben versucht, die als protected internal gekennzeichnet ist und dies in den Metadaten definiert ist, auf die verwiesen wird. In diesem Fall sollte die überschreibende Methode als protected gekennzeichnet werden.

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

Im folgenden Beispiel wird CS0507 generiert.

// 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() {}  
}