생성자를 사용하여 파생 클래스에서 보호 된 멤버를 초기화하려고하지만 base()를 호출하기 때문에 this()를 호출 할 수 없어 일부 호출이 "냄새 "기본 생성자를 호출 할 때 초기화 메서드 재사용
public class ABase
{
public object Param1 { get; set; }
public object Param2 { get; set; }
protected object Param3 { get; set; }
public ABase()
: this(null, null)
{ }
public ABase(object param1)
: this(param1, null)
{ }
public ABase(object param1, object param2)
{
Param1 = param1;
Param2 = param2;
}
}
public class A : ABase
{
public A()
{ InitParam3(); }
public A(object param1)
: base(param1)
{ InitParam3(); }
public A(object param1, object param2)
: base(param1, param2)
{ InitParam3(); }
private void InitParam3()
{
Param3 = "param3";
}
}
모든 생성자에서 InitParam3()
를 호출 피할 수있는 방법이 있나요. 나는 변화를 디자인하기 위해 열었습니다.
현재 솔루션 (귀하의 코드)이 @lazyberezovsky 대답보다 좋습니다. 내 의견보기. – Aliostad
'모든 생성자에서 InitParam3() 호출을 피할 수있는 방법이 있습니까? –
사실 저는 두 분과 모두 동의해야하지만 각각의 해결책에는 자체 단점이 있습니다. – misha