Есть много вопросов о событиях в интерфейсах. Вот пара:
Поскольку интерфейсы используются для принудительного исполнения контракта для реализации, для меня это не имеет смысла, поскольку не обеспечивает фактического возбуждения события. Конкретная реализация всегда может иметь событие, но нигде не вызывать его. Учтите следующее:
public interface INotifyPropertyChanged
{
event PropertyChangedEventHandler PropertyChanged;
}
public class SomeClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string SomeProperty
{
get { return this.someField; }
set { this.someField = value; }
}
private string someField;
}
Сказанное выше скомпилирует и сработает, но даже если я подпишусь на событие PropertyChanged, ничего не произойдет. Каким образом можно добиться того, чтобы событие действительно вызывалось, и если нет, то зачем вообще иметь события в интерфейсах?