C# 捕获从共享DLL引发但位于不同项目中的事件

C# 捕获从共享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

我正在尝试捕获从共享DLL引发的事件,但该事件位于不同的项目中

为了解释更多,我有一个Dll,比如说“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);
        }
    }
};
现在,相同的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;
        }
  }
}