在调用基础构造函数之前处理参数

时间:2013-02-22 15:23:13

标签: c# inheritance

是否可以在将参数传递给基础构造函数之前处理它们?

如:

A --> B

其中A是抽象类,B是子类。

A的构造函数是这样的:

Protected A (MyObject myObject)

B的构造函数是这样的:

Public B (string objectName)

我希望它是这样的

Public B (String objectName) : base (MyObject myObject)
{
myObject = new MyObject (objectName);
}

2 个答案:

答案 0 :(得分:5)

如果你想做一些非平凡的事情(不能自然地融入你可以内联到base调用的单个表达式中),那么唯一的方法是在{{1方法,例如:

static

答案 1 :(得分:1)

是的,但仅作为单个表达式:

public B(String objectName) : base(new MyObject(objectName)) {
}

请注意,由于它在构造类之前运行,因此无法访问实例成员。

如果要运行多个表达式(例如,参数验证),可以调用静态方法。