Aviso do compilador (nível 2) CS0280

'type' não implementa o padrão 'pattern name'. 'nome do método' tem a assinatura errada.

Duas instruções em C#, foreach e using, dependem de padrões predefinidos, "collection" e "resource", respectivamente. Esse aviso ocorre quando o compilador não pode corresponder uma dessas instruções ao seu padrão devido à assinatura incorreta de um método. Por exemplo, o padrão "collection" requer que haja um método chamado MoveNext que não usa parâmetros e retorna um booleanarquivo . Seu código pode conter um MoveNext método que tem um parâmetro ou talvez retorna um objeto.

O padrão "recurso" e using fornecer outro exemplo. O padrão "recurso" requer o Dispose método, se você definir uma propriedade com o mesmo nome, receberá esse aviso.

Para resolver esse aviso, verifique se as assinaturas de método em seu tipo correspondem às assinaturas dos métodos correspondentes no padrão e se você não tem propriedades com o mesmo nome de um método exigido pelo padrão.

Exemplo

O exemplo a seguir gera 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
   }
}