说,我们有两个类:
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"))
{
}
}
或者有没有其他方法可以做同样的事情,甚至更好?