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