События.NET - блокирующиеся подписчики от подписки на событии

Скажем, у меня есть интерфейс "Processor", выставляющий событие - OnProcess. Обычно конструкторы делают обработку. Таким образом я могу безопасно подписаться на этом событии и быть уверен, что оно будет запущено. Но один процессор не делает обработки - таким образом я хочу предотвратить подписчиков на subscibe на нем. Я могу сделать это? Другими словами, в коде ниже я хочу, чтобы последняя строка выдала исключение:

var emptyProcessor = new EmptyProcessor();
emptyProcessor.OnProcess += event_handler; // This line should throw an exception.
8
задан Peter Mortensen 4 March 2011 в 21:06
поделиться

1 ответ

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
8
ответ дан 5 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: