Partager via


Erreur du compilateur CS0507

Mise à jour : novembre 2007

Message d'erreur

'fonction1' : ne peut pas changer les modificateurs d'accès en cas de substitution du membre hérité 'accès' de 'fonction2'
'function1' : cannot change access modifiers when overriding 'access' inherited member 'function2'

Une tentative a été faite pour changer la spécification de l'accès dans une méthode override.

Exemple

L'exemple suivant génère l'erreur 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'erreur CS0507 peut également se produire si une classe essaie de substituer une méthode marquée comme protected internal définie dans les métadonnées référencées. Dans cette situation, la méthode de substitution doit être marquée comme protected.

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

L'exemple suivant génère l'erreur 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() {}
}