簡體   English   中英

帶有Func <>參數的C#Action <>

[英]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 */ });

關鍵是因為你傳遞了一個帶有FuncAction ,調用者(很可能)將成為將Func傳遞給你的Action 所以你只需指定Func如何應用於傳入的序列(如果我正確地讀取原型)。

var obj = MyClass.GetAndProcessDependants<int>(
    () => DateTime.Now, 
    (someList, id) => DoSomething(x)
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM