たとえば、次の 2 つのクラスがあるとします。
public class A
{
protected static readonly int DefaultValue = 123;
int value;
public A()
{
value = DefaultValue;
}
public A(int _value)
{
value = _value;
}
}
public class B : A
{
public B(XElement x)
: base(x.Element("int") == null
? A.DefaultValue
: (int)x.Element("int"))
{
}
}
クラス B のパラメーターなしのコンストラクターを作成できることを理解しています::
public B():base()
{
}
そして、次のようなものがあります:
B objB = (x.Element("int") == null)?new B():new B((int)x.Element("int"));
しかし、このロジックをクラス B にカプセル化したいと考えています。
また、ある種の静的ファクトリ メソッドを実行してカプセル化することもできます (private
必要に応じて、これらのクラス B コンストラクターを作成することもできます)。
public static B GetInstance(XElement x)
{
return (x.Element("int") == null)?new B():new B((int)x.Element("int"));
}
しかし、私は次の疑似コードのようなものを手に入れたいと思っています:
public class A
{
//don't need this anymore
//protected static readonly int DefaultValue = 123;
int value;
public A()
{
value = 123;
}
public A(int _value)
{
value = _value;
}
}
public class B : A
{
public B(XElement x)
: x.Element("int") == null
? base()
: base((int)x.Element("int"))
{
}
}
または、同じことを素晴らしく、さらに優れた方法で行うことができる他のアプローチはありますか?