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


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

Обновлен: Ноябрь 2007

Сообщение об ошибке

"функция 1": невозможно изменить модификаторы доступа при переопределении унаследованного члена "доступ" "функция 2"
'function1' : cannot change access modifiers when overriding 'access' inherited member 'function2'

Была сделана попытка изменения указания доступа при переопределении метода.

Пример

Следующий пример приводит к возникновению ошибки CS0507.

// CS0507.cs
abstract public class clx
{
   virtual protected void f() {}
}

public class cly : clx
{
   public override void f() {}   // CS0507
   public static void Main() {}
}

Ошибка 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() {}
}