Скажем, у меня есть интерфейс "Processor", выставляющий событие - OnProcess. Обычно конструкторы делают обработку. Таким образом я могу безопасно подписаться на этом событии и быть уверен, что оно будет запущено. Но один процессор не делает обработки - таким образом я хочу предотвратить подписчиков на subscibe на нем. Я могу сделать это? Другими словами, в коде ниже я хочу, чтобы последняя строка выдала исключение:
var emptyProcessor = new EmptyProcessor();
emptyProcessor.OnProcess += event_handler; // This line should throw an exception.
class EmptyProcessor : IProcessor {
[Obsolete("EmptyProcessor.OnProcess should not be directly accessed", true)]
public event EventHandler OnProcess {
add { throw new NotImplementedException(" :( "); }
remove { }
}
}
В этой ситуации , параметр true
на устаревшем вызывает исключение времени компиляции. так:
EmptyProcessor processor1 = new EmptyProcessor();
IProcessor processor2 = new EmptyProcessor();
processor1.OnProcess += handler; // <-- compile-time error
processor2.OnProcess += handler; // <-- run-time error