Ich habe eine Klasse geschrieben, die IEnumerable<T>
implementiert. Ich habe eine Methode, die MyClass
zurückgibt. Wenn ich versuche, innerhalb dieser Methode yield return
, der Compiler sagt mir "... kann nicht ein Iterator-Block sein, weil ... ist kein Iterator-Interface-Typ".Wie definiere ich einen Iterator-Interface-Typ?
Also, wie kann ich meinen eigenen Interface-Iterator-Typ definieren? Muss es "abstrakt" sein (können keine Methoden definiert sein)?
Was ich tun möchte, ist eine Reihe von chainable Methoden schreiben, so sollte jede Methode eine Instanz von MyClass
zurückgeben. Aber ich brauche MyClass
um eine Art aufzählbar zu sein. Anstatt einen zugrunde liegenden Datentyp zu verwenden, habe ich gehofft, ich könnte einfach überall hin.
@Oded:
class SharpQuery : IEnumerable<HtmlNode>
{
public SharpQuery Find(string selector)
{
foreach (var n in this)
{
// filter the results
yield return node;
}
}
}
Können Sie die relevanten Bits Ihres Codes veröffentlichen? – Oded