Предположим, у меня есть два класса - один, который предоставляется мне (но, предположим, мне не разрешено изменять его, поскольку он поддерживается кем-то другим), и тот, который я контролирую и могу изменить.
// Class A is provided to me by someone else, and suppose I can't modify it
public class A
{
public A()
{
...
}
public void DoSomethingInA()
{
...
}
}
// Class B is what I control
public class B
{
public A MyClassAInstance;
public B(A myClassAInstance)
{
MyClassAInstance = myClassAInstance;
// *** HERE IS WHERE I NEED HELP
// NEED TO WRITE AN EVENT / EVENT HANDLER, WITH / WITHOUT REFLECTION
// THAT RUNS DoSomethingInB WHENEVER MyClassAInstance's DoSomethingInA
// METHOD IS CALLED (AND COMPLETED)
}
public void DoSomethingInB()
{
...
}
}
Как я могу определить Event / EventHandler в class B
, который запускает его метод DoSomethingInB
всякий раз, когда вызывается (и завершается) метод MyClassAInstance
class A
instance *1007* ,
Я перепробовал множество вариантов, но, похоже, ни один из них не работает.
Например, я пытался:
public class B
{
public A MyClassAInstance;
public B(A myClassAInstance)
{
MyClassAInstance = myClassAInstance;
var eventInfo = GetType().GetEvent("MyEvent");
var methodInfo = myClassAInstance.GetType().GetMethod("DoSomethingInA");
Delegate handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, myClassAInstance, methodInfo);
eventInfo.AddEventHandler(this, handler);
MyEvent += DoSomethingInB;
}
public event EventHandler MyEvent;
public void DoSomethingInB()
{
...
}
}
Но это не работает.
Буду признателен за любые предложения или помощь.