当编译器抛出错误时,我很兴奋写这个泛型函数(unable to cast T to System.Web.UI.Control)
当我调用它时,我基本上将它传递给它,它会查找该类型的所有控件.发生错误l.Add((T)ctrl);
private List<T> RecurseTypes<T>(Control ctrls)
{
var l = new List<T>();
foreach (var ctrl in ctrls.Controls)
if (ctrl.GetType() is T)
l.Add((T)ctrl);
return l;
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么,或者我只是运气不好?
Mar*_*ell 13
private List<T> RecurseTypes<T>(Control parent) where T: Control
{
var l = new List<T>();
foreach (var child in parent.Controls)
if (child is T)
l.Add((T)child);
return l;
}
Run Code Online (Sandbox Code Playgroud)
2个变化:
where T : Control通用约束is用法(控件可以是a T,但是GetType()返回Type,这绝不是一个Control)另外,请注意,这并没有真正递归; 这可能只是:
return ctrl.Controls.OfType<T>().ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |