2010-07-23 303 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

相關問題