따라서 다음 개체가 있다고 가정 해 보겠습니다.
public abstract class Chicken
{
public Egg Container { get; private set; }
protected Chicken(Egg container)
{
Container = container;
}
}
public abstract class Egg
{
public Chicken Contents { get; private set; }
protected Egg(Chicken contents)
{
Contents = contents;
}
}
public class Buckeye : Chicken
{
public Buckeye(Egg container) : base(container)
{
}
}
public class BrownEgg : Egg
{
public BrownEgg() : base(new Buckeye(this))
{
}
}
닭 품종의 이름을 제공해 주신 Wikipedia에 감사드립니다.
어쨌든 이전 코드는 컴파일되지 않습니다. "멤버 이니셜 라이저에서 'this'를 사용할 수 없습니다."라는 메시지가 표시됩니다.
그래서 저는 이것이 가능한 방법이 있는지 알고 싶습니다. 생성중인 개체에 대한 참조를 외부 개체 기본으로 전달해야하는 생성중인 자식 개체에 전달할 수 있습니까?
나는 아마도 질문 제목을 잘못 말했지만 간결하게 전달하는 것은 어려운 개념입니다.
this
기본 생성자 호출에서 사용할 수 없습니다 ( 멤버 이니셜 라이저에서 'this'를 사용할 수없는 이유는 무엇입니까? 참조 ).
채워진 객체 대신 생성자 함수를 전달하여 내부 생성자가 전달할 수 this
있습니다. 다음과 같은 것 :
protected Egg(Func<Egg, Chicken> contentsCreator)
{
Contents = contentsCreator(this);
}
public BrownEgg() : base(me => new Buckeye(me))
{
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다