Я создал интерфейс с некоторыми свойствами.
Если бы интерфейс не существовал, все свойства объекта класса были бы установлены на
{ get; private set; }
Однако это недопустимо при использовании интерфейса, так можно ли этого добиться, и если да, то как?
c#
asp.net
interface
getter-setter
dotnetnoob
источник
источник
Интерфейс определяет публичный API. Если публичный API содержит только геттер, вы определяете только геттер в интерфейсе:
public interface IBar { int Foo { get; } }
Частный сеттер не является частью общедоступного API (как и любой другой частный член), поэтому вы не можете определить его в интерфейсе. Но вы можете добавлять любые (частные) члены в реализацию интерфейса. На самом деле не имеет значения, будет ли сеттер реализован как публичный или частный, или будет ли сеттер:
public int Foo { get; set; } // public public int Foo { get; private set; } // private public int Foo { get { return _foo; } // no setter } public void Poop(); // this member also not part of interface
Сеттер не является частью интерфейса, поэтому его нельзя вызвать через ваш интерфейс:
IBar bar = new Bar(); bar.Foo = 42; // will not work thus setter is not defined in interface bar.Poop(); // will not work thus Poop is not defined in interface
источник