[英]C# Action<> with Func<> parameter
我有以下方法,我無法找出正確的語法來調用:
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); };
});
不知道為什么我甚至有這個問題。 這是我猜的那些日子之一..
謝謝
你的lambda語法是完全錯誤的。
您需要創建兩個參數一個 lambda表達式:
(list, id) => DoSomething(...)
現在這個函數只接受一個參數,當它要求兩個時!
您需要接受列表參數,例如(list, id) => {}
只看上面的描述,它看起來應該是:
var obj = MyClass.GetAndProcessDependants<int>(() => DateTime.Now,
(seq, fun) => { /* do something with seq and fun */ });
關鍵是因為你傳遞了一個帶有Func
的Action
,調用者(很可能)將成為將Func
傳遞給你的Action
。 所以你只需指定Func
如何應用於傳入的序列(如果我正確地讀取原型)。
var obj = MyClass.GetAndProcessDependants<int>(
() => DateTime.Now,
(someList, id) => DoSomething(x)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.