我需要將某個類型的實例(將在此時刻創建)傳遞給方法。這種類型提供了幾個事件,我想訂閱過它,所以我的代碼如下所示:在對象初始化期間添加事件處理程序
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
不是真的......它只是提供方法的一種方式。這本身不是初始化。 –