Вызов обработчика приватного события из внешнего класса - PullRequest
1 голос
/ 17 июня 2010

У меня есть два класса. Один класс (скажем, A) принимает текстовое поле в c'tor. и регистрирует событие TextChanged с помощью закрытого метода-обработчика событий. 2-й класс (скажем, B) создает объект класса A, предоставляя текстовое поле.

как вызвать частный обработчик события класса A из класса B?

также регистрирует событие MouseClick.

есть ли способ вызвать частные обработчики событий?

Ответы [ 3 ]

3 голосов
/ 17 июня 2010

Краткий ответ: нет.

Объявите ваш обработчик событий как открытый или, что еще лучше, создайте метод открытого прокси, например

public class MyClass 
{
  private myHandler....

  public returnType DoClick() { return myHandler(...); }  
}

Предоставление прямого доступа к приватному членупобеждает цель объявления его частным.

2 голосов
/ 17 июня 2010

Создайте открытый метод, который может вызывать как обработчик события, так и другой класс.В общем, плохая идея вызывать обработчики событий напрямую.Тщательно продумайте, что вы пытаетесь сделать, и вы сможете найти структуру кода, которая более точно соответствует концепции того, что вы пытаетесь сделать.Вы не хотите, чтобы ваш другой класс нажимал кнопку;Вы хотите, чтобы ваш другой класс делал что-то такое же, что и нажатие кнопки.

0 голосов
/ 17 июня 2010

нет ограничений на подписку частным методом и запуск события с частным подписчиком. У вас были какие-либо ошибки?

...