我有以下方法无法找出正确的语法来调用:
public T GetAndProcessDependants<C>(Func<object> aquire,
Action<IEnumerable<C>, Func<C, object>> dependencyAction) {}
我试着这样称呼它:
var obj = MyClass.GetAndProcessDependants<int>(() => DateTime.Now,
(() => someList, (id) => { return DoSomething(x); }) }
编辑: 大家好,你们帮我打开了一个灯泡。这就是我所做的:
var obj = MyClass.GetAndProcessDependants<int>(
() => DateTime.Now,
(list, f) =>
{
list = someList;
f = id => { return DoSomething(id); };
});
不确定为什么我甚至会遇到这个问题。这是我猜的那些日子之一..
THX
答案 0 :(得分:3)
你的lambda语法是完全错误的。
您需要使用两个参数创建单个 lambda表达式:
(list, id) => DoSomething(...)
答案 1 :(得分:3)
现在该函数只接受一个参数,当它要求两个时!
您需要接受列表参数,例如(list, id) => {}
答案 2 :(得分:2)
只看上面的描述,看起来应该是:
var obj = MyClass.GetAndProcessDependants<int>(() => DateTime.Now,
(seq, fun) => { /* do something with seq and fun */ });
关键是,因为您传递的Action
传递Func
,所以调用者(很可能)将Func
传递到Action
Func
}。所以你只需指定{{1}}如何应用于传入的序列(如果我正确读取原型)。
答案 3 :(得分:2)
var obj = MyClass.GetAndProcessDependants<int>(
() => DateTime.Now,
(someList, id) => DoSomething(x)
);