C# 捕获从共享DLL引发但位于不同项目中的事件
我正在尝试捕获从共享DLL引发的事件,但该事件位于不同的项目中 为了解释更多,我有一个Dll,比如说“Common”,我在两个独立的项目中使用它。如何从我的库中引发事件 在我的公共DLL中,我有一个类aC# 捕获从共享DLL引发但位于不同项目中的事件,c#,dll,event-handling,C#,Dll,Event Handling,我正在尝试捕获从共享DLL引发的事件,但该事件位于不同的项目中 为了解释更多,我有一个Dll,比如说“Common”,我在两个独立的项目中使用它。如何从我的库中引发事件 在我的公共DLL中,我有一个类a public class MyCustomEvent : System.EventArgs { public string MyStatement; } public class A { public delegate void MyCustomEventHandler(o
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);
}
}
};
现在,相同的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;
}
}
}
但是,当仅引发事件时,“我的事件”始终为空,就好像没有人订阅该处理程序一样。是否创建了
B
的实例?如果不实例化B
没有人会订阅事件。@辛塔,是的,我有哦,我看到你在A
的实例上启动事件,而B
使用另一个实例。如果要在实例之间共享,请将事件定义为static
。可以共享一些源代码吗?如何实现这一点。aObj.MyCustomEvent+=CatchEvent
对我来说没有意义。事件被称为RaiseEvent
。复制/粘贴时输入错误?
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;
}
}
}