2012-11-08 44 views
0

我懷疑這比我想象的更簡單!如何創建Func列表<T1,T2,出T3>

我可以創建函數功能的列表,然後添加到它

var x = new List<Func<IBQCustomer, string>>(); 
x.Add(c => c.FullName); 

卜如何我添加一個額外的參數到功能】?當我嘗試我得到一個錯誤

var y = new List<Func<IBQCustomer, OrderByDirection, string>>(); 
y.Add(...); 

這可能嗎?

我的目標建立屬性的列表,並與他們做什麼


錯誤:

y.Add(c => c.FullName, OrderByDirection.Asc); 
No overload for Add that takes 2 arguments 
+0

什麼是錯誤? – HackedByChinese

+1

什麼是'...'? – dtb

+0

「...」=「我不知道該把什麼東西放到這裏才能將項目添加到我的列表中」 上面添加了一個錯誤 – BlueChippy

回答

0

「OrderByDirection」枚舉不是一個函數的參數?在這種情況下,你可以使用類似:

var y = new List<Tuple<Func<IBQCustomer, string>, OrderByDirection>>(); 
y.Add(new Tuple<Func<IBQCustomer, string>, OrderByDirection>(c => c.FullName, OrderByDirection.Asc)); 

當然你也可以使用自定義類,而不是「元組<>」:

class MyClass 
{ 
    public Func<IBQCustomer, string> Function; 
    public OrderByDirection Direction; 
} 

或者,你也許寫的lambda表達式錯了嗎?這應該工作:

var y = new List<Func<IBQCustomer, OrderByDirection, string>>(); 
y.Add((c, d) => c.FullName); 
3

您可以使用多個參數,如該聲明匿名委託:

y.Add((customer, direction) => customer.FullName); 

然後,它會工作。無論調用列表中的每個委託,都必須提供兩個參數,即IBQCustomerOrderByDirection

相關問題