Ich habe eine IEnumerable<T>
Methode, die ich verwende, um Steuerelemente in einer WebForms-Seite zu finden.
Die Methode ist rekursiv und ich habe einige Probleme mit der Rückgabe des Typs, den ich möchte, wenn die yield return
gibt den Wert des rekursiven Aufrufs zurück.
Mein Code sieht wie folgt aus:
public static IEnumerable<Control> GetDeepControlsByType<T>(this Control control)
{
foreach(Control c in control.Controls)
{
if (c is T)
{
yield return c;
}
if(c.Controls.Count > 0)
{
yield return c.GetDeepControlsByType<T>();
}
}
}
Dies führt derzeit zu einem "Cannot convert expression type"-Fehler. Wenn diese Methode jedoch den Typ IEnumerable<Object>
wird der Code erstellt, aber in der Ausgabe wird der falsche Typ zurückgegeben.
Gibt es eine Möglichkeit zur Verwendung von yield return
und gleichzeitig eine Rekursion verwenden?