Как подписаться на C# Событие в C ++ / CLI - PullRequest
0 голосов
/ 23 апреля 2020

У меня нет проблем с подпиской на событие в c#. Однако я не могу понять синтаксис, чтобы сделать то же самое из c ++ / cli.

Вот как я делаю это в c#:

Класс публикации:

public class Publisher
{
   private Publisher()
   {
      // prevent construction other than through instance method.
   }

   public static Publisher Instance()
   {
      if (mInstance == null) {
         mInstance = new Publisher();
      }

      return mInstance;
   }

   public void PublishItem(Item item)
   {
      var handler = OnNewItem;
      if (handler != null) {
         handler(this, new ItemEventArgs(reading));
      }
   }

public EventHandler<ItemEventArgs> OnNewItem;

Подписка на класс

   public Subscribe()
   {
      Publisher.Instance().OnNewItem += OnNewItemReceived;
   }

    private void OnNewItemReceived(object src, ItemEventArgs itemArgs)
    {
       // do stuff
    }

Если я попытаюсь использовать тот же синтаксис c ++ / cli, я получу ошибку операнда.

Например:

void MyCPPCLIClass::Subscribe()
{
    Publisher::Instance()->OnNewItem += MyCPPCLIClass::OnNewItemReceived;
}

void MyCPPCLIClass::OnNewItemReceived(System::Object^ src, Lib::ItemEventArgs^ itemArgs )
{
   //do stuff
}

Может кто-нибудь помочь мне понять, как реализовать класс Subscribeing в c ++ / cli?

...