ノードの子をロードする関数があります。内部的には、WCF非同期サービスを呼び出してロードします。署名は次のとおりです。
public void AddChildElements(Node parentElement,
Action<IEnumerable<Node>> callback)
{
}
これは次のように使用できます
_nodeBuilder.AddChildElements(parentElement, (elements) =>
{
//do something with elements
});
次に、ある条件に基づいて階層を拡張する関数を作成します。だから私はこのような拡張関数を書きます
public static T LoadHierarchyUntilItemFound<T>(
this IEnumerable<T> sequence, Func<T, List<T>> loadaction,
Func<T, string> searchstring)
{
//...
}
loadactionパラメーターは、ノードのロード関数を想定しています。使用法は次のとおりです。
Elements.LoadHierarchyUntilItemFound(LoadChildren,
"root.UK.England.London");
問題は、ロード関数をどのように作成するかです。
private List<Node> LoadChildren(Node parent)
{
// _nodeBuilder.AddChildElements(parent, here it expects a callback
//which gives the result, how to use this?);
}
要するに、問題は、どのようにコールバック関数を使用してラッパー関数の結果を返すことができるかということです。