У меня нет проблем с подпиской на событие в 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?