Erreur du compilateur CS0507
'function1' : impossible de changer les modificateurs d’accès en cas de substitution du membre hérité 'access' 'function2'
Une tentative de modification de la spécification de l’accès dans une substitution de méthode a été effectuée.
Exemple 1
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() {}
}
Exemple 2
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() {}
}