Подтвердить что ты не робот

Свойства С# в интерфейсе

Может кто-нибудь, пожалуйста, помогите мне, лучше ли включать свойства интерфейса или абстрактного класса?

Я бы предположил, что интерфейс должен иметь только сигнатуры методов?

4b9b3361

Ответ 1

Свойства - это синтаксический сахар для методов. Рассмотрим это:

У меня есть свойство:

String PropertyA { get; set; } 

Во время выполнения это выглядит примерно так:

String get_PropertyA() { ... }
void set_PropertyA(String value) { ... }

Обратите внимание, что "..." указывает код, который будет помещен генератором кода. Фактически я говорю, что свойства действительно не существуют за пределами С#, поскольку они сводятся к методам, использующим конвецию, указанную в моем примере. Чтобы подтвердить, что я говорю, вы можете использовать отражение и посмотреть, как выглядит отраженный код.

Однако может быть плохой практикой размещать свойства на интерфейсе, если они делают что-то, что нетривиально в реализации. Например, если я хочу установить переменную и обновлять другие переменные, или установка свойства может лишить мое присвоение свойства из-за внутреннего условия, тогда свойство не должно использоваться. Я думаю, что это общее правило, которое будет применяться за пределами интерфейсов.

Ответ 2

Абсолютно приемлемо иметь свойства в интерфейсе. Я делаю это все время.

Ответ 3

Свойства отлично в интерфейсе

См:

http://msdn.microsoft.com/en-us/library/ms173156.aspx

Интерфейсы состоят из методов, свойств, событий, индексаторов или любых сочетание этих четырех типов членов. Интерфейс не может содержать константы, поля, операторы, конструкторы экземпляров, деструкторы или типы. Он не может содержать статические элементы. Элементы интерфейсов автоматически публично, и они не могут включать в себя модификаторы доступа.

Ответ 4

Совершенно верно включение свойства в интерфейс или абстрактный класс.

Ответ 5

Я не верю, что для этого есть лучшая практика.

Свойства (которые действительно являются методами) разрешены на интерфейсах. Все, что угодно, это просто мнение. Это включает мой пункт о чем-то еще, являющемся мнением.