我正在尝试捕获从共享DLL但在另一个项目中引发的事件
为了解释更多,我有一个Dll可以说" Common"我在两个单独的项目中使用它。我如何从我的图书馆中提取活动
在我的Common DLL中,我有一个A类
public class MyCustomEvent : System.EventArgs
{
public string MyStatement;
}
public class A
{
public delegate void MyCustomEventHandler(object sender, MyCustomEvent e);
public EventHandler<MyCustomEvent> RaiseEvent;
public void DoSomeStuff()
{
var args = new MyCustomEvent { MyStatement = "ha ha ha" };
if(RaiseEvent != null) // This is always Null
{
RaiseEvent(this, args);
}
}
};
我在Winforms应用程序中使用此DLL&amp;点击按钮就可以举起这个事件,就像这样说。
private void button1_click(object sender, EventArgs e)
{
A a = new A();
a.DoSomeStuff();
}
现在,在不同项目中使用了相同的DLL,我订阅了此事件处理程序
public class B
{
A aObj = new A();
public B()
{
aObj.MyCustomEvent += CatchEvent;
}
private void CatchEvent(object sender, MyCustomEvent myEvent)
{
if (myEvent != null)
{
String str = myEvent.MyStatement;
}
}
}
但是在仅提升Event时,我的事件始终为null,就好像没有人订阅该处理程序一样。