IEvent наследуется от IDelegateEvent, но накладывает дополнительное ограничение на тип разрешенного делегата (заставляя его возвращать единицу измерения). IEvent также наследует от IObservable. Если вы не хотите иметь событие со странным типом, нет причин полагаться на базовый интерфейс IDelegateEvent вместо более распространенного IEvent.
Что вы имеете в виду, когда говорите, что [<CLIEvent>]
не имеет значения? В FSI есть ошибка, которая не позволяет правильно генерировать события для типа (например, как видно из Type.GetEvents()
), но события генерируются правильно, когда код компилируется. Даже если это FSI, вы должны увидеть, что методы add_ и remove_ генерируются, когда вы применяете атрибут [<CLIEvent>]
.