我有一个包含许多控件的 .aspx 页面。
我想递归搜索 Page.Controls 集合。
我自己添加的 UserControl 有一个接口 IUserControl。
使用此扩展方法:
public static T FindNodeInHierarchy<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> childrenSelector, Predicate<T> condition)
{
// return default wenn keine Items existieren
if (source == null || !source.Any()) return default(T);
// return result wenn item gefunden und hört auf die Liste durchzugehen
var attempt = source.FirstOrDefault(t => condition(t));
if (!Equals(attempt, default(T))) return attempt;
// Ruft die Funktion auf eine Liste auf bis runter in alle Unterlisten bis das
// entsprechende Objekt gefunden ist.
return source.SelectMany(childrenSelector).FindNodeInHierarchy(childrenSelector, condition);
}
当我尝试这样的事情时,我得到了一个异常的记忆:
var query = Page.Controls
.Cast<Control>()
.FindNodeInHierarchy<Control>(c => Page.Controls.Cast<Control>(), c => c is IUserControl);
我也尝试过.OfType<IUserControl>()
但后来我得到空值返回。
如何使用放置在某处的 IUserControl 接口获取此 UserControl
网站?