У меня есть метод IEnumerable<T>
, который я использую для поиска элементов управления на странице WebForms.
Метод рекурсивный, и у меня возникают некоторые проблемы с возвратом типа, который я хочу, когда yield return
возвращает значение рекурсивного вызова.
Мой код выглядит следующим образом:
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>();
}
}
}
В настоящее время выбрасывается ошибка "Невозможно преобразовать тип выражения". Если, однако, этот метод возвращает тип IEnumerable<Object>
, код строит, но на выходе возвращается неправильный тип.
Есть ли способ использования yield return
, в то же время используя рекурсию?