LINQ:在选择创建中分配事件处理程序

时间:2011-09-20 23:17:20

标签: c# linq

我有一个LINQ语句,它创建了许多项

From x in datasource
   select (Customer) new BusinessCustomer(x.SomeThing)

我需要设置BusinessCustomer.OnTapped事件处理程序。

可以在LINQ语句中完成吗?

1 个答案:

答案 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)