Ho scritto una classe che implementa IEnumerable<T>
. Ho un metodo che restituisce MyClass
. Se provo a yield return
da quel metodo, il compilatore mi dice "... non può essere un blocco iteratore perché ... non è un tipo di interfaccia iteratore".Come definire un tipo di interfaccia iteratore?
Quindi, come posso definire il mio tipo di iteratore dell'interfaccia? Deve essere "astratto" (non è possibile definire alcun metodo)?
Quello che voglio fare è scrivere una serie di metodi concatenabili, quindi ogni metodo dovrebbe restituire un'istanza di MyClass
. Ma ho bisogno di MyClass
per essere una sorta di enumerabile. Anziché utilizzare un tipo di dati sottostante, speravo di riuscire a trovare solo yield return
ovunque.
@Oded:
class SharpQuery : IEnumerable<HtmlNode>
{
public SharpQuery Find(string selector)
{
foreach (var n in this)
{
// filter the results
yield return node;
}
}
}
Puoi pubblicare i bit rilevanti del tuo codice? – Oded