Partager via


Avertissement du compilateur (niveau 2) CS0280

Mise à jour : novembre 2007

Message d'erreur

'type' n'implémente pas le modèle 'nom de modèle'. 'nom de méthode' a une signature erronée.
'type' does not implement the 'pattern name' pattern. 'method name' has the wrong signature.

Deux instructions en C# (foreach et using) utilisent respectivement les modèles prédéfinis « collection » et « ressource ». Cet avertissement se produit lorsque le compilateur ne peut pas faire correspondre l'une de ces instructions à son modèle en raison de la signature inexacte d'une méthode. Par exemple, le modèle « collection » requiert une méthode appelée MoveNext, qui n'accepte pas de paramètres et retourne boolean. Votre code peut contenir une méthode MoveNext qui contient un paramètre ou qui peut retourner un objet.

Le modèle « ressource » et using en fournissent un autre exemple. Le modèle « ressource » requiert la méthode Dispose ; si vous définissez une propriété portant le même nom, vous obtiendrez l'affichage de cet avertissement.

Pour résoudre cet avertissement, veillez à ce que les signatures de méthode de votre type correspondent aux signatures des méthodes correspondantes au sein du modèle ; veillez également à ce que les propriétés utilisées comme méthode par le modèle ne portent pas le même nom.

Exemple

L'exemple suivant génère l'erreur CS0280.

// CS0280.cs
using System;
using System.Collections;

public class ValidBase: IEnumerable
{
   IEnumerator IEnumerable.GetEnumerator()
   {
      yield return 0;
   }

   internal IEnumerator GetEnumerator()
   {
      yield return 0;
   }
}

class Derived : ValidBase
{
   // field, not method
   new public int GetEnumerator;
}

public class Test
{
   public static void Main()
   {
      foreach (int i in new Derived()) {}   // CS0280
   }
}