Advertencia del compilador (nivel 2) CS0280

Actualización: noviembre 2007

Mensaje de error

'tipo' no implementa el modelo 'nombre de modelo'. 'nombre de método' tiene la firma equivocada.
'type' does not implement the 'pattern name' pattern. 'method name' has the wrong signature.

Dos instrucciones de C#, foreach y using, dependen de modelos predefinidos, "colección" y "recurso", respectivamente. Esta advertencia aparece cuando el compilador no puede hacer coincidir una de estas instrucciones con su modelo debido a la firma incorrecta de un método. Por ejemplo, el modelo de "colección" requiere que haya un método llamado MoveNext que no tome ningún parámetro y devuelva un valor boolean. Su código podría contener un método MoveNext que toma un parámetro, o quizás devuelve un objeto.

El modelo de "recurso" y using proporcionan otro ejemplo. El modelo de "recurso" requiere el método Dispose; si define una propiedad con el mismo nombre, obtendrá esta advertencia.

Para resolver esta advertencia, asegúrese de que las firmas del método de su tipo coinciden con las firmas de los métodos correspondientes del modelo, y también de que no tiene ninguna propiedad que se llame igual que un método requerido por el modelo utilizado.

Ejemplo

El código siguiente genera el error 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
   }
}