Erro do compilador CS0507
«função1»: não é possível alterar modificadores de acesso ao sobressaírem a "função2" do membro herdado do 'acesso'
Foi feita uma tentativa de alterar a especificação de acesso num método de substituição.
Exemplo 1
A amostra 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() {}
}
Exemplo 2
CS0507 também pode ocorrer se uma classe tentar anular um método marcado como protected internal definido nos metadados referenciados. Nesta situação, o método primordial deve ser marcado como protected.
// CS0507_b.cs
// compile with: /target:library
abstract public class clx
{
virtual protected internal void f() {}
}
Exemplo 3
A amostra 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() {}
}