Поделиться через


Ошибка компилятора CS0507

"функция1": невозможно изменить модификаторы доступа при переопределении "уровень доступа", унаследованном из "функция2"

Предпринята попытка изменить спецификацию уровня доступа в переопределении метода.

Пример 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() {}  
}