2011-11-14 67 views
5

我有我找不出正確的語法如下方法來調用:C#操作<>與Func鍵<>參數

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); }) } 

編輯: thx大家好,你們幫我打開了燈泡在我腦海中。這是我做的:

var obj = MyClass.GetAndProcessDependants<int>(
      () => DateTime.Now, 
      (list, f) => 
      { 
       list = someList; 
       f = id => { return DoSomething(id); }; 
      }); 

不知道爲什麼我甚至有這個問題。它的那些日子裏,我想一個..

THX

回答

2

只看上面的描述,它看起來像調用應該是:

var obj = MyClass.GetAndProcessDependants<int>(() => DateTime.Now, 
    (seq, fun) => { /* do something with seq and fun */ }); 

的關鍵是因爲你是傳遞一個Action這需要一個Func,調用者(最有可能)將通過Func到您的Action。因此,您只需指定Func如何應用於傳入的序列(如果我正確讀取原型)。

+0

這幫我意識到我做錯了什麼 – emer

+0

@emer:很高興幫助! –

3

你的lambda語法是完全錯誤的。

您需要創建兩個參數 lambda表達式:

(list, id) => DoSomething(...) 
3

眼下函數只接受一個參數,當它要求兩年!

你需要接受一個列表參數,如(list, id) => {}

2
var obj = MyClass.GetAndProcessDependants<int>(
    () => DateTime.Now, 
    (someList, id) => DoSomething(x) 
); 
相關問題