2

我有一个包含 3 个项目的解决方案。一个项目处理异步通信。当它完成它的回调时,它会引发一个事件 SomethingCompleted。如何从同一解决方案中的另一个项目订阅此事件?

我在接收项目中构建了事件处理程序,但在发送项目中看不到事件。

4

3 回答 3

7

在单独的程序集中引发的事件没有什么特别之处,除非事件本身是使用internal访问修饰符声明的。检查它是否是公开的。

举个例子来说明我的意思,我相信你不会三思而后行订阅Button.Click- 但Button在不同的程序集中,不是吗?

于 2010-01-18T22:08:56.327 回答
2

该事件必须在定义它的类中声明为公共:

public class Something
{
  public event EventHandler SomethingCompleted;
}

然后,您可以像订阅任何其他事件一样订阅它:

Something s = ...;
s.SomethingCompleted += SomeEventHandler;
于 2010-01-18T22:09:35.980 回答
0

您需要引用引发事件的类以注册事件处理程序。

一旦你有了它,它就像注册任何其他事件处理程序一样完成:

foo.SomethingCompleted += (sender, e) => this.DoSomething();
于 2010-01-18T22:09:08.930 回答