多くのコントロールを持つ .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>()
しかし、その後、null 値が返されます。
どこかに置かれている IUserControl インターフェイスでこの UserControl を取得するにはどうすればよいですか
サイト?