자손에게 보이는 공공 계급 회원
-
06-09-2019 - |
문제
나는 다른 클래스의 공개 클래스 멤버로서 빌더 패턴에서 많은 견인력을 얻었습니다.
public class Part
{
public class Builder
{
public string Name { get; set; }
public int Type { get; set; }
public Part Build()
{
return new Part(Name, Type);
}
}
protected Part(string name, int type)
{
...
}
}
참고 보호 생성자 - 제작자를 사용하여 부품을 얻는 방법이 마음에 듭니다. 전화
Part p = new Part.Builder() { Name = "one", Type = 1 }.Build();
잘 작동합니다. 내가하고 싶은 것은이 빌더를 사용하여 유형 (예 :)에 따라 특별한 종류의 부품을 제공하는 것입니다.
public class SpecialPart : Part
{
protected SpecialPart(string name, int type) : base(name, type) { }
}
건축업자에 대한 약간의 변화 :
public Part Build()
{
if (Type == _some_number_)
return new SpecialPart(Name, Type);
return new Part(Name, Type);
}
그러나 이것은 작동하지 않습니다. 부품 .Builder는 SpecialPart의 보호 생성자를 볼 수 없습니다. Builder가 부품의 후손들과 협력하고 동일해야 할 일자 의미를 얻을 수있는 방법은 무엇입니까?
해결책
고양이를 피부하는 방법에는 여러 가지가 있지만 여기서 저항이 가장 적은 경로는 다양한 부품 유형의 생성자를 공개 또는 내부로 만들 것입니다.
다른 팁
자체 어셈블리에 넣고 내부 액세스 지정자를 사용하는 것을 제외하고는 할 수 없습니다.
제휴하지 않습니다 StackOverflow