Я думаю, что это именно то, для чего был создан NotImplementedException
.Вы никогда не должны сталкиваться с NotImplementedException
в производственном коде, но во время тестирования становится ясно, что у вас есть путь к коду, который, ну, в общем, не был реализован.
Вроде как комментарий TODO, но больше в-your-face:)
Хотя я могу спросить, не означает ли наличие обработчика событий, на который необходимо подписаться, и отсутствие подписчика по умолчанию,
РЕДАКТИРОВАТЬ
Я думаю, что я немного неправильно понял ваш первоначальный вопрос, основываясь на вашем комментарии.Как уже говорили другие (и я сомневался), вы не должны вызывать исключение, если у вас нет подписчика на обработчик событий;просто не пытайся это назвать.Если никто не заботится о том, что произошло событие x, вы ничего не можете с этим поделать.
В ваш код не входит забота о том, заботится ли кто-нибудь о том, что это произошло, а просто уведомление о том, что это произошло, если они это сделаютcare.
EDIT 2 - теперь с дополнительным кодом
public interface INeedToKnowAboutSomethingImportant
{
void WhenSomethingImportantHappens(SomethingImportantHappenedEventArgs args);
}
public class DoesSomethingImportant
{
private readonly INeedToKnowAboutSomethingImportant _needyDependency;
public DoesSomethingImportant(INeedToKnowAboutSomethingImportant needyDependency)
{
_needyDependency = needyDependency;
}
protected void SomethingImportantHappened(object sender, EventArgs e)
{
//Handle internally
_needyDependency.WhenSomethingImportantHappens(new SomethingImportantHappenedEventArgs(e));
}
}
Следуя этой схеме, вам не нужно беспокоиться о том, подписан ли кто-либо на ваши обработчики событий.,Вы должны выполнить зависимость, но не имеет значения ВСЕ чем вы ее заполняете, потому что чем бы она ни была, у вас будет этот метод для вызова.