.NET 에서 서브 대상 을 전달 하 는 대상 에 대한 상세 한 설명

디자인 대상 이 계승 할 때 부모 대상 구성 자 는 일부 매개 변 수 를 필요 로 한다.이런 매개 변 수 는 하위 대상 구성 자가 base 키 워드 를 통 해 제공 할 수 있다

namespace Test001
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerable<string> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerable<string> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Constructors
        public ChildClass() : base(new List<string>()) { }
    }
}
그러나 하위 대상 이 부모 대상 에 게 전달 하 는 인 자 를 사용 하려 면 작은 기술 이 필요 합 니 다.처음에는 하위 대상 의 속성 대상 을 만 들 고 부모 대상 에 게 전달 하 겠 다 는 생각 이 었 다.이 방법 은 곧 실패 할 것 이다.컴 파일 만 으로 는.....................................................대상 의 설립 은 먼저 구조 자 를 만 든 다음 에 대상 을 낳 는 것 이다.서브 를 구축 하 는 단계 에서 대상 의 속성 을 사용 하려 면 반드시 실패 할 것 이다

namespace Test002
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerable<string> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerable<string> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Fields
        private readonly List<string> _dataCollection = new List<string>();

 
        // Constructors
        private ChildClass() : base(_dataCollection) { }
    }
}

생각해 보 니 각 도 를 바 꾸 어 이 문 제 를 해결 했다.차라리 키 대상 의 구성 자 를 따로 열 고 먼저 아버지 대상 에 게 물 려 줄 대상 을 만 든 다음 에 아버지 대상 에 게 직접 물 려 주지 않 고 아들 대상 에 게 자신의 구성 자 를 물 려 준 다음 에 이 구성 자 는 아버지 대상 에 게 전달 된다.내 눈 이 침침 해 졌 다 고 쓰 여 있 는데,마치 잰말놀이 같다.프로그램 코드 를 직접 보 세 요.사실은 아주 간단 합 니 다.이 작은 디자인 을 완성 할 수 있 습 니 다

namespace Test003
{
    public class ParentClass
    {
        // Constructors
        public ParentClass(IEnumerable<string> dataCollection)
        {
            this.DataCollection = dataCollection;
        }

 
        // Properties
        public IEnumerable<string> DataCollection { get; private set; }
    }

    public class ChildClass : ParentClass
    {
        // Fields
        private readonly List<string> _dataCollection = null;

 
        // Constructors
        public ChildClass() : this(new List<string>()) { }

        private ChildClass(List<string> dataCollection)
            : base(dataCollection)
        {
            _dataCollection = dataCollection;
        }
    }
}

좋은 웹페이지 즐겨찾기