Почему компилятор C # не допускает установки частных свойств в интерфейсах? - PullRequest
19 голосов
/ 14 октября 2011

В определенном сценарии, таком как модель представления MVVM, мне иногда требуется личный установщик, так как модель представления предоставляет состояние, которое может быть изменено только внутренне.

Так что, это неправильно, когда нужен частный сеттер на интерфейсе? (и я имею в виду не особенно в описанном сценарии) Если нет, то почему компилятор C # не позволяет этого?

Спасибо.

1 Ответ

54 голосов
/ 14 октября 2011

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

public interface IFoo
{
    string MyReadonlyString { get; }
} 

public class FooImplementation : IFoo
{
    public string MyReadonlyString { get; private set; }
}
...