Errore del compilatore CS0507
'funzione1': non è possibile cambiare i modificatori di accesso quando viene eseguito l'override di 'accesso' del membro ereditato 'funzione2'
È stato eseguito un tentativo di modificare la specifica di accesso nell'override di un metodo.
Esempio 1
L'esempio seguente genera l'errore CS0507.
// CS0507.cs
abstract public class clx
{
virtual protected void f() {}
}
public class cly : clx
{
public override void f() {} // CS0507
public static void Main() {}
}
Esempio 2
L'errore CS0507 può verificarsi anche se una classe tenta di eseguire l'override di un metodo contrassegnato come protected internal
definito nei metadati di riferimento. In questa situazione, il metodo sottoposto a override deve essere contrassegnato come protected
.
// CS0507_b.cs
// compile with: /target:library
abstract public class clx
{
virtual protected internal void f() {}
}
L'esempio seguente genera l'errore 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() {}
}