在对象初始化期间添加事件处理

xvd*_*iff 2 c# syntax events lambda expression

我需要将特定类型的实例(将在此刻创建)传递给方法.这种类型提供了我想订阅的几个事件,所以我的代码如下所示:

var instance = new Instance();
instance.OnEvent1 += (sender, args) => {
    DoThis();
    DoThat();
}
instance.OnEvent2 += (sender, args) => DoThisToo();
instance.OnEvent3...
MyMethod(instance);
Run Code Online (Sandbox Code Playgroud)

现在,是否可以在初始化期间添加处理程序?所以我可以这样写:

MyMethod((MyType)instance => {
    instance.OnEvent1 += (sender, args) => {
        DoThis();
        DoThat();
    }
    instance.OnEvent2...
});
Run Code Online (Sandbox Code Playgroud)

当然,由于美容原因,这仅是期望的.我喜欢我的代码小而且可读.

Sel*_*enç 5

现在这是不可能的,但根据Roslyn它的计划,可能在将来可用.

--------------------------------------------------------------------------
| Feature            | Example                                |   C#     |
-------------------------------------------------------------------------|
| Event initializers |  new Customer { Notify += MyHandler }; | Planned  |
-------------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这回答了我怀疑 OP 真正想要的内容,但*不*匹配问题中指定的内容 - 即在 lambda 表达式中添加事件处理程序。这已经支持了。我怀疑 OP 在对象初始值设定项和 lambda 表达式之间有点混淆。 (2认同)