добавление события в другой класс после завершения метода - PullRequest
0 голосов
/ 16 апреля 2020

Предположим, у меня есть два класса - один, который предоставляется мне (но, предположим, мне не разрешено изменять его, поскольку он поддерживается кем-то другим), и тот, который я контролирую и могу изменить.

// 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()
   {
    ...
   }

}

Но это не работает.

Буду признателен за любые предложения или помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...