CS0507 de erro do compilador

Mensagem de erro

'function1': não é possível alterar modificadores de acesso ao substituir 'acessar' herdado membro 'function2'

Houve uma tentativa de alterar a especificação de acesso em uma substituir do método.

Exemplo

O exemplo a seguir gera 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 também pode ocorrer se uma classe tenta substituir um método marcado sistema autônomo protected internal definido em metadados referenciado. Nessa situação, o método de substituição deve ser marcado sistema autônomo protected.

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

O exemplo a seguir gera 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() {}
}