Compartilhar via


Erro do Compilador CS0507

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

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

Exemplo 1

O exemplo a seguir gera o erro 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

O erro CS0507 também poderá ocorrer se uma classe tentar substituir um método marcado como protected internal, conforme definido nos metadados referenciados. Nessa situação, o método de substituição deve ser marcado como protected.

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

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