Интерфейсы, как определено MSDN "содержат только подписи методов, делегатов или событий". Однако, так как свойства являются не больше, чем синтаксическим сахаром для получения и метода установки, им также позволяют в интерфейсах. Мой вопрос - там какая-либо ситуация, где определение свойств в интерфейсе является соответствующим, или мы должны придерживаться сценариев, описанных MSDN?
Я думаю, что свойства вполне приемлемы в интерфейсах.
Как вы сказали, они действительно являются методами получения, установки или получения и установки. Многие интерфейсы в Framework определяют свойства, такие как IAsyncResult и IWebProxy .
Да, интерфейс должен определять свойства, когда это действительно необходимо. Пожалуйста, предположите это. Существует интерфейс IUser, в котором определено свойство «Имя», и вы можете использовать его, не беспокоясь о том, не реализовал ли объект это свойство.
public void main()
{
IUser u = User.GetUser("id");
string name = u.Name;
}
В статье, на которую вы ссылаетесь, также говорится:
Интерфейс может быть членом пространства имен или класса и может содержать { {1}} подписи следующих членов:
- Методы
- Свойства
- Индексаторы
- События