Доступ к event из вне

216
05 октября 2017, 10:48

Возможно ли дать доступ к event в другой dll?

Пример :

DC4_API.Hooks.cs

public static event PlayerApprovalDelegate OnPlayerApproval;
public delegate void PlayerApprovalDelegate(PlayerApprovalEvent e);

DC4_CORE.Call.cs

public static void PlayerApproval()
{
   if (DC4_API.Hooks.OnPlayerApproval != null)
   {
     DC4_API.Hooks.OnPlayerApproval(ape);
   }
}

Но получаю ошибку - может возможно вызвать из другой dll

Событие "Hooks.OnPlayerApproval" может находиться только в левой части операции += или -=
Answer 1

DLL здесь ни при чем. Событие нельзя вызвать из другого класса, можно только подписаться/отписаться, о чем и говорит ошибка.

Чтобы подписаться на событие используйте +=:

DC4_API.Hooks.OnPlayerApproval += ...метод, соответствующий PlayerApprovalDelegate 

Для того чтобы вызвать событие извне придется изменять код в DC4_API.Hooks.cs, а именно создать метод, который будет его вызывать:

public void PerformPlayerApproval() 
{
    OnPlayerApproval(...какие-то аргументы);
}

затем обратиться к этому методу из DC4_CORE.Call.cs:

DC4_API.Hooks.PerformPlayerApproval();
Answer 2

Нет.

Event'ы может вызывать только класс, который их содержит. Если вам нужно, чтобы код из другого класса отправлял event, сделайте в классе, содержащем event, публичный метод, который будет отправлять event, и который другой класс сможет вызвать.

Дополнительное чтение по теме: Event и delegate: в чем отличие?

READ ALSO
Ошибка ORA-01008: не все переменные привязаны

Ошибка ORA-01008: не все переменные привязаны

Есть проблема с выполнением параметризованного запроса в c#Вот мой код:

290
Быстрый нечеткий поиск по коллекции C#

Быстрый нечеткий поиск по коллекции C#

Предположим, есть коллекция вида List<string>, в ней очень большое число записейПользователь должен начинать вводить слово, а программа должна...

346
редактирование xml файла в c#

редактирование xml файла в c#

вот есть у меня список в xml файле, я по нему прохожусь и вывожу в textbox, но что если нужно добавить/удалить элемент в xml файле? как через код это...

379
C# ImmutableList как им пользоваться?

C# ImmutableList как им пользоваться?

Споткнулся в самом начале, не могу инициализировать список, видимо из-за того что список неизменяемый Как с ним работать? Как присвоить ему...

291