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

Почему компилятор С# не разрешает создание частных свойств в интерфейсах?

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

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

Спасибо.

4b9b3361

Ответ 1

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

public interface IFoo
{
    string MyReadonlyString { get; }
} 

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