Поймать событие, вызванное из общей библиотеки 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, как будто никто не подписан на этот обработчик.