Errore del compilatore CS0507

Aggiornamento: novembre 2007

Messaggio di errore

'funzione1': impossibile cambiare i modificatori di accesso quando viene eseguito l'override di 'accesso' del membro ereditato 'funzione2'.
'function1' : cannot change access modifiers when overriding 'access' inherited member 'function2'

È stato effettuato un tentativo di modificare la specifica di accesso nell'override di un metodo.

Esempio

Il seguente codice di esempio 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() {}
}

L'errore CS0507 può inoltre verificarsi se una classe tenta di eseguire l'override di un metodo contrassegnato come protected internal e definito nei metadati cui viene fatto riferimento. In questa situazione il metodo di cui si esegue l'override deve essere contrassegnato come protected.

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

Il seguente codice di esempio 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() {}
}