c# - 在对象初始化期间添加事件处理程序

标签 c# events syntax lambda expression

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

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...
});

这当然只是出于美观的原因。我喜欢我的代码小且可读。

最佳答案

目前这是不可能的,但根据Roslyn它已计划并可能在将来推出。

--------------------------------------------------------------------------
| Feature            | Example                                |   C#     |
-------------------------------------------------------------------------|
| Event initializers |  new Customer { Notify += MyHandler }; | Planned  |
-------------------------------------------------------------------------|

关于c# - 在对象初始化期间添加事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24951619/

相关文章:

c# - 空引用 - 任务 ContinueWith()

c# - <%@ 页面调试 ="True"...... %>

c# - 如何在 C# 打印中设置打印点

javascript - 如何继承EventTarget对象?

c# - 如何触发事件?

c# - SQL 和 C# 中的多个条件参数

javascript - Redis 异步查询过早完成的可能解决方案

c++ - 返回值是类名后跟一对空括号是什么意思?

mysql - 标准 SQL SELECT * FROM TABLE 返回语法错误

c - 在 Windows 中冒泡排序 'works',但在 GNU/Linux 上不使用 GCC