Я, вероятно, просто невротик, но я регулярно нахожусь в ситуациях, когда у меня есть класс, который публикует событие, и мне удобно подписываться на это событие из самого класса (например, в конструкторе), а не только подписываться на внешние классы.
Это звучит разумно для меня, но я не могу удержаться от ощущения, что это плохая практика по той простой причине, что я всегда сталкиваюсь с вопросом: "Почему бы не выполнить действия, которые вы предоставили бы в обработчик события в коде, который запускает событие?"
public class Button
{
public Button()
{
this.Click += someHandler; // bad practice?
}
public event EventHandler Click;
public void HandleInput()
{
if (someInputCondition)
{
// Perform necessary actions here rather than
// subscribing in the constructor?
this.Click(this, ...);
}
}
}
Есть ли недостатки для подписки на ваши собственные события?