Поймать событие, вызванное из общей библиотеки DLL, но в другом проекте

Я пытаюсь поймать событие, вызванное из общей библиотеки 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);
        }
    }
};

Я использую эту DLL в приложении Winforms и при нажатии кнопки она вызывает это событие, скажем так.

 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 ответов

Другие вопросы по тегам