我有一个包含3个项目的解决方案。一个项目处理异步通信。当它完成它的回调时,它会引发一个事件SomethingCompleted。 如何在同一解决方案中从另一个项目订阅此事件?
我在接收项目中构建了事件处理程序,但它没有在发送项目中看到该事件。
答案 0 :(得分:7)
除非使用internal
访问修饰符声明事件本身,否则在单独的程序集中引发的事件没有什么特别之处。检查它是否公开。
举一个例子来说明我的意思,我相信你对订阅Button.Click
没有三思而后行 - 但是Button
是一个不同的集会,不是吗?
答案 1 :(得分:2)
必须在定义它的类中将事件声明为public:
public class Something
{
public event EventHandler SomethingCompleted;
}
然后您可以订阅它,就像任何其他事件一样:
Something s = ...;
s.SomethingCompleted += SomeEventHandler;
答案 2 :(得分:0)
您需要引用引发事件的类来注册事件处理程序。
完成后,就像注册任何其他事件处理程序一样:
foo.SomethingCompleted += (sender, e) => this.DoSomething();