Escribí una clase que implementa IEnumerable<T>
. Tengo un método que devuelve MyClass
. Si trato de yield return
desde ese método, el compilador me dice "... no puede ser un bloque iterador porque ... no es un tipo de interfaz de iterador".¿Cómo se define un tipo de interfaz de iterador?
Entonces, ¿cómo puedo definir mi propio tipo de iterador de interfaz? ¿Tiene que ser "abstracto" (no puede haber ningún método definido)?
Lo que quiero hacer es escribir un montón de métodos encadenables, por lo que cada método debe devolver una instancia de MyClass
. Pero necesito MyClass
para ser un tipo de enumerable. En lugar de utilizar algún tipo de datos subyacente, esperaba poder simplemente yield return
en todas partes.
@Oded:
class SharpQuery : IEnumerable<HtmlNode>
{
public SharpQuery Find(string selector)
{
foreach (var n in this)
{
// filter the results
yield return node;
}
}
}
¿Puedes publicar los bits relevantes de tu código? – Oded