답변:
인터페이스에서는 getter
속성에 대해서만 정의 할 수 있습니다
interface IFoo
{
string Name { get; }
}
그러나 수업 시간에 private setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
인터페이스는 공개 API를 정의합니다. 공개 API에 게터 만 포함 된 경우 인터페이스에서 게터 만 정의합니다.
public interface IBar
{
int Foo { get; }
}
개인 세터는 다른 개인 구성원과 마찬가지로 공용 API의 일부가 아니므로 인터페이스에서 정의 할 수 없습니다. 그러나 인터페이스 구현에 (비공개) 멤버를 자유롭게 추가 할 수 있습니다. 실제로 setter가 퍼블릭 또는 프라이빗으로 구현되는지 또는 setter가 있는지 여부는 중요하지 않습니다.
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
Setter는 인터페이스의 일부가 아니므로 인터페이스를 통해 호출 할 수 없습니다.
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