不确定如何正确命名问题,所以这就是我想要实现的目标。我有一个通用的迭代器方法,它以递归的方式遍历对象的属性
internal static void IterateProperties(Object element, Action<Object> action)
{
// recursively iterate over objects properties recursively
// ...
action.Invoke(element);
}
然后我有一个可以传递给该方法的方法。
private static void ResetSomeProperty(Object element)
{
// do something with the element
}
然后在某个时候调用它。
IterateProperties(element, ResetSomeProperty);
到目前为止一切顺利。现在我想将一些其他依赖项传递给ResetSomeProperty
方法:
//Pseudocode
IterateProperties(element, ResetSomeProperty(externalDictionary));
private static void ResetSomeProperty(
Object element,
[externalProperty] Dictionary<int, int> dictionary)
{
// do something with the element
}
我希望你得到我需要的东西。我想不出一个允许我的设计(除了去提供该信息的外部静态类)
答案 0 :(得分:0)
我认为您需要将IterateProperties中的Action<object>
参数更改为Action<object,Dictionary<int,int>>
。这样,你就会有这样的事情:
internal static void IterateProperties(Object element, Dictionary<int,int> dict, Action<Object, Dictionary<int,int>> action)
{
// recursively iterate over objects properties recursively
// ...
action.Invoke(element, dict);
}
对IterateProperties的方法调用将是:
IterateProperties(element, externalDictionary, ResetSomeProperty);
答案 1 :(得分:0)
使用lambda来关闭相关词典:
IterateProperties(element, ele => ResetSomeProperty(ele, externalDictionary));