Interfejs API definiuje publiczną. Jeśli API publicznych zawiera tylko getter, a następnie zdefiniować tylko getter w interfejsie:
public interface IBar
{
int Foo { get; }
}
Prywatna seter nie jest częścią publicznych API (jak każdy inny członek prywatnego), a tym samym nie można zdefiniować go w interfejsie. Ale możesz dodać dowolnych (prywatnych) członków do implementacji interfejsu. Właściwie to nie ma znaczenia, czy seter będzie realizowany jako publiczne lub prywatne, lub jeśli nie będzie seter:
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
Seter nie jest częścią interfejsu, więc to nie może być wywołana za pośrednictwem interfejsu:
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
Dzięki, uratowałeś mnie –
Z jakiegoś powodu NIGDY tego nie pamiętam. Wydaje mi się, że trafiłem na tę stronę przez Google około 13 razy w mojej karierze. LOL – Dan
@Dan Nie jesteś sam: D – Vahid