как подписаться на событие в поднятой в другой сборке

2

У меня есть решение, которое содержит 3 проекта. Один проект обрабатывает асинхронные коммуникации. Когда он завершит его обратный вызов, он вызывает событие SomethingCompleted. Как я могу подписаться на это событие из другого проекта в том же решении?

У меня есть обработчики событий, созданные в принимающем проекте, но он не видит событие в отправляющем проекте.

Теги:
events
assemblies
solution

3 ответа

0
Лучший ответ

Вам нужно иметь ссылку на класс, поднимающий событие, чтобы зарегистрировать обработчик событий.

Как только у вас это получилось, это произошло как регистрация любого другого обработчика событий:

foo.SomethingCompleted += (sender, e) => this.DoSomething();
  • 0
    Спасибо за вашу помощь, это то, что мне было нужно
7

Нет ничего особенного в событиях, созданных в отдельной сборке, если только это событие не объявлено с помощью модификатора доступа internal. Убедитесь, что он открыт.

Чтобы привести пример того, что я имею в виду, я уверен, что вы не думаете дважды о подписке на Button.Click - но Button находится в другой сборке, не так ли?

2

Событие должно быть объявлено как общедоступное в классе, который его определяет:

public class Something
{
  public event EventHandler SomethingCompleted;
}

Затем вы можете подписаться на него так же, как и на любое другое событие:

Something s = ...;
s.SomethingCompleted += SomeEventHandler;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню