我有一个函数可以加载节点的子节点。它在内部调用 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?);
}
简而言之,问题是如何使用回调函数返回包装函数的结果?