我有一种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>,如果此方法返回type ,则代码会生成,但是在输出中返回了错误的类型。
有没有yield return同时使用递归的使用方法?
慕无忌1623718
波斯汪
相关分类