我有以下函数来获取所有类型的子控件。
private IEnumerable<Control> GetControlsOfType(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetControlsOfType(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
我正在尝试使用泛型类型参数对其进行转换。
private IEnumerable<T> GetControlsOfType<T>(Control control) where T: Control
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetControlsOfType<T>(ctrl))
.Concat(controls)
.Where(c => c.GetType() == T);
}
代码上有错误.Concat
。
错误 6 'System.Collections.Generic.IEnumerable
<T
>' 不包含 'Concat' 的定义和最佳扩展方法重载 'System.Linq.Queryable.Concat<TSource
>(System.Linq.IQueryable<TSource
>, System.Collections.Generic. IEnumerable<TSource
>)' 有一些无效参数
如何解决问题?