Возможно ли дать доступ к 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" может находиться только в левой части операции += или -=
DLL здесь ни при чем. Событие нельзя вызвать из другого класса, можно только подписаться/отписаться, о чем и говорит ошибка.
Чтобы подписаться на событие используйте +=:
DC4_API.Hooks.OnPlayerApproval += ...метод, соответствующий PlayerApprovalDelegate
Для того чтобы вызвать событие извне придется изменять код в DC4_API.Hooks.cs, а именно создать метод, который будет его вызывать:
public void PerformPlayerApproval()
{
OnPlayerApproval(...какие-то аргументы);
}
затем обратиться к этому методу из DC4_CORE.Call.cs:
DC4_API.Hooks.PerformPlayerApproval();
Нет.
Event'ы может вызывать только класс, который их содержит. Если вам нужно, чтобы код из другого класса отправлял event, сделайте в классе, содержащем event, публичный метод, который будет отправлять event, и который другой класс сможет вызвать.
Дополнительное чтение по теме: Event и delegate: в чем отличие?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости