C # Language Design: явная реализация интерфейса события
Небольшой вопрос о дизайне языка C # :))
Если бы у меня был такой интерфейс:
interface IFoo {
int Value { get; set; }
}
Можно явно реализовать такой интерфейс, используя автоматически реализованные свойства C # 3.0:
sealed class Foo : IFoo {
int IFoo.Value { get; set; }
}
Но если бы у меня было событие в интерфейсе:
interface IFoo {
event EventHandler Event;
}
И пытаясь явно реализовать это с помощью поля как событие:
sealed class Foo : IFoo {
event EventHandler IFoo.Event;
}
Я получу следующую ошибку компилятора:
error CS0071: An explicit interface implementation of an event must use event accessor syntax
Я думаю, что подобные событиям поля - это своего рода дуализм для автоматически реализуемых свойств.
Итак, мой вопрос:В чем причина такого ограничения?