programing

인터페이스를 사용할 때 개인 설정기를 어떻게 구현합니까?

yoursource 2023. 5. 7. 19:00
반응형

인터페이스를 사용할 때 개인 설정기를 어떻게 구현합니까?

몇 가지 속성을 가진 인터페이스를 만들었습니다.

인터페이스가 존재하지 않는 경우 클래스 개체의 모든 속성이 다음과 같이 설정됩니다.

{ 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

반응형