반응형
인터페이스를 사용할 때 개인 설정기를 어떻게 구현합니까?
몇 가지 속성을 가진 인터페이스를 만들었습니다.
인터페이스가 존재하지 않는 경우 클래스 개체의 모든 속성이 다음과 같이 설정됩니다.
{ get; private set; }
그러나 인터페이스를 사용할 때는 이 작업이 허용되지 않습니다. 그렇다면 이 작업을 수행할 수 있습니까?
인터페이스에서만 정의할 수 있습니다.getter
당신의 재산을 위하여
interface IFoo
{
string Name { get; }
}
하지만, 당신의 수업에서 당신은 그것을 확장해서 가질 수 있습니다.private setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
인터페이스는 공용 API를 정의합니다.공용 API에 getter만 포함되어 있으면 인터페이스에서 getter만 정의합니다.
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
언급URL : https://stackoverflow.com/questions/18249981/how-do-you-implement-a-private-setter-when-using-an-interface
반응형
'programing' 카테고리의 다른 글
Postgres: bash 스크립트에서 다시 생성/재채우기 전에 전체 데이터베이스 지우기 (0) | 2023.05.07 |
---|---|
Xcode 6/7/8에서 디버그 빌드와 릴리스 빌드를 전환하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
스레드에서 스레드 ID 가져오기 (0) | 2023.05.07 |
번호 배열이 주어지면 다른 모든 번호의 제품 배열을 반환합니다(분할 없음). (0) | 2023.05.07 |
git branch, fork, fetch, merge, rebase 및 clone의 차이점은 무엇입니까? (0) | 2023.05.07 |