Advertencia del compilador (nivel 2) CS0279

Actualización: noviembre 2007

Mensaje de error

'nombre de tipo' no implementa el modelo 'nombre de modelo'. 'nombre de método' es estático o no público.
'type name' does not implement the 'pattern name' pattern. 'method name' is either static or not public.

Hay varias instrucciones en C# que se basan en modelos definidos, como foreach y using. Por ejemplo, foreach se basa en la clase de colección que implementa el modelo enumerable. Este error se produce cuando el compilador no puede establecer la correspondencia debido a que se ha declarado un método como static o no public. Los métodos de los modelos tienen que ser obligatoriamente instancias de clases y públicos.

Ejemplo

El siguiente ejemplo genera la advertencia CS0279:

// CS0279.cs

using System;
using System.Collections;

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

    internal IEnumerator GetEnumerator()
    {
        yield return 0;
    }

    public static void Main()
    {
        foreach (int i in new myTest()) {}  // CS0279
    }
}