我需要将某个类型的实例(将在此时刻创建)传递给方法。这种类型提供了几个事件,我想订阅过它,所以我的代码如下所示:在对象初始化期间添加事件处理程序
var instance = new Instance();
instance.OnEvent1 += (sender, args) => {
DoThis();
DoThat();
}
instance.OnEvent2 += (sender, args) => DoThisToo();
instance.OnEvent3...
MyMethod(instance);
现在,是有可能在初始化过程中添加的处理程序?所以我可以写这样的东西:
MyMethod((MyType)instance => {
instance.OnEvent1 += (sender, args) => {
DoThis();
DoThat();
}
instance.OnEvent2...
});
这当然只是因为美观的原因所期望的。我喜欢我的代码小&可读。
这看起来不像是“初始化期间” - 看起来像是“作为方法调用的一部分”。你实际上是否意味着你想这样做:var instance = new Instance {OnEvent1 + = ...}'?如果是这样,答案是你可以在C#6中做到这一点...... –
@JonSkeet好消息!不能将lambda表达式参数视为初始化(匿名类型)? – xvdiff
不是真的......它只是提供方法的一种方式。这本身不是初始化。 –