У меня есть решение, которое содержит 3 проекта. Один проект обрабатывает асинхронные коммуникации. Когда он завершит его обратный вызов, он вызывает событие SomethingCompleted. Как я могу подписаться на это событие из другого проекта в том же решении?
У меня есть обработчики событий, созданные в принимающем проекте, но он не видит событие в отправляющем проекте.
Вам нужно иметь ссылку на класс, поднимающий событие, чтобы зарегистрировать обработчик событий.
Как только у вас это получилось, это произошло как регистрация любого другого обработчика событий:
foo.SomethingCompleted += (sender, e) => this.DoSomething();
Нет ничего особенного в событиях, созданных в отдельной сборке, если только это событие не объявлено с помощью модификатора доступа internal
. Убедитесь, что он открыт.
Чтобы привести пример того, что я имею в виду, я уверен, что вы не думаете дважды о подписке на Button.Click
- но Button
находится в другой сборке, не так ли?
Событие должно быть объявлено как общедоступное в классе, который его определяет:
public class Something
{
public event EventHandler SomethingCompleted;
}
Затем вы можете подписаться на него так же, как и на любое другое событие:
Something s = ...;
s.SomethingCompleted += SomeEventHandler;