我有一个LINQ语句,它创建了许多项
From x in datasource
select (Customer) new BusinessCustomer(x.SomeThing)
我需要设置BusinessCustomer.OnTapped事件处理程序。
可以在LINQ语句中完成吗?
答案 0 :(得分:2)
如果您可以修改BusinessCustomer
类,则可以添加一个接受OnTapped
事件的处理程序委托的构造函数。
如果您不能或不想修改BusinessCustomer
来执行此操作,您可以使用辅助方法,这也可以让您消除演员。
private Customer CreateBusinessCustomer(Thing thing, EventHandler tapHandler)
{
var customer = new BusinessCustomer(thing);
customer.OnTapped = tapHandler;
return customer;
}
private void Customer_OnTapped(object sender, EventArgs e)
{
// do something
}
现在您的查询如下:
from x in datasource
select CreateBusinessCustomer(x.SomeThing, Customer_OnTapped)