2012-11-08 47 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

相关问题