在父构造函数之前调用子类构造函数
答
在IL中,这是可能的。在C#中:不。
您可以使用virtual
运行在该类型的构造函数之前A型方法,但它是鼓励和风险。但是:
class Foo {
public Foo() {
Console.WriteLine("Foo ctor");
SomeMethod(); // BAD IDEA (calling a virtual method in a ctor)
}
protected virtual void SomeMethod() {}
}
class Bar : Foo {
protected override void SomeMethod() {
Console.WriteLine("SomeMethod in Bar");
}
public Bar() : base() { /* only to show call order */
Console.WriteLine("Bar ctor");
}
}
这是一个糟糕的主意,因为你不能保证子类准备的方法调用。
答
你试图完成什么?也许你可以有一个从基类ctor调用的抽象方法?
+1
您觉得您需要这样做的事实表明您的设计或思维存在一些缺陷。我会建议仔细考虑你尝试这样做的动机。 – NeilDurant 2010-07-23 17:58:20
+0
对,这就是为什么我问这里的目标是什么。 – 2010-07-24 00:55:42
+1令人沮丧! – 2010-07-23 17:21:21