2010-07-23 257 views

回答

8

在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"); 
    } 
} 

这是一个糟糕的主意,因为你不能保证子类准备的方法调用。

+0

+1令人沮丧! – 2010-07-23 17:21:21

0

你试图完成什么?也许你可以有一个从基类ctor调用的抽象方法?

+1

您觉得您需要这样做的事实表明您的设计或思维存在一些缺陷。我会建议仔细考虑你尝试这样做的动机。 – NeilDurant 2010-07-23 17:58:20

+0

对,这就是为什么我问这里的目标是什么。 – 2010-07-24 00:55:42

相关问题