как подписаться на событие в поднятой в другой сборке - PullRequest
2 голосов
/ 19 января 2010

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

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

Ответы [ 3 ]

7 голосов
/ 19 января 2010

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

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

2 голосов
/ 19 января 2010

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

public class Something
{
  public event EventHandler SomethingCompleted;
}

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

Something s = ...;
s.SomethingCompleted += SomeEventHandler;
0 голосов
/ 19 января 2010

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

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

foo.SomethingCompleted += (sender, e) => this.DoSomething();
...