Compilerfehler CS0507Compiler Error CS0507

„Funktion1“: Die Zugriffsmodifizierer können beim Überschreiben des geerbten „Zugriff“-Members „Funktion2“ nicht geändert werden.'function1' : cannot change access modifiers when overriding 'access' inherited member 'function2'

Es wurde der Versuch unternommen, die Zugriffsspezifikation in einer Methodenüberschreibung zu ändern.An attempt was made to change the access specification in a method override.

BeispielExample

Im folgenden Beispiel wird CS0507 generiert.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() {}  
}  

BeispielExample

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.CS0507 can also occur if a class attempts to override a method marked as protected internal defined in referenced metadata. In diesem Fall sollte die überschreibende Methode als protected gekennzeichnet werden.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() {}  
}  

BeispielExample

Im folgenden Beispiel wird CS0507 generiert.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() {}  
}