捕获从共享DLL但在另一个项目中引发的事件

时间:2014-11-24 14:02:17

标签: c# dll event-handling

我正在尝试捕获从共享DLL但在另一个项目中引发的事件

为了解释更多,我有一个Dll可以说&​​#34; 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,就好像没有人订阅该处理程序一样。

0 个答案:

没有答案