Ian*_*n P 30 c# inheritance constructor
标题可能有点含糊不清,但我想不出更好的方法来说明这一点.
我意识到在调用基础构造函数之前我不能调用派生构造函数,但是我可以在将它们传递给基础之前以某种方式修改/创建参数值吗?
例如,
public enum InputType
{
Number = 1,
String = 2,
Date = 3
}
public class BaseClass
{
public BaseClass(InputType t)
{
// Logic
}
}
public class DerivedClass : BaseClass
{
public DerivedClass(int i)
: base(value)
// Can I do something to infer what value should be here?
{
// Logic
}
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个派生类,可以推断出基本构造函数所需的值(在这个例子中,InputType.Number对于一个有效int),有没有办法修改和/或创建在派生之前传递给基础构造函数的值构造函数执行?
Don*_*kby 50
我希望你可以在基类构造函数的参数列表中调用静态方法.
public class DerivedClass : BaseClass
{
public DerivedClass(int i)
: base(ChooseInputType(i))
{
}
private static InputType ChooseInputType(int i)
{
// Logic
return InputType.Number;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用静态方法计算要传递给基础构造函数的值.
public class DerivedClass :
BaseClass
{
public
DerivedClass(int i) :
base(ComputedValue(i))
{
}
public static InputType
ComputedValue(int i)
{
return InputType.Number; // or any other computation you want here
}
}
Run Code Online (Sandbox Code Playgroud)