2010-07-23 14 views

Antwort

8

In IL ist dies möglich. In C#: Nein.

Sie könnenvirtual verwenden eine Methode in einer Art vor, dass Typ des Ctor zu laufen, aber es wird abgeraten und riskant. Aber:

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

Es ist eine schlechte Idee, weil Sie nicht garantieren können, dass die Unterklassen bereit für die Methode-Aufruf sind.

+0

+1 für entmutigt! –

0

Was versuchen Sie zu erreichen? Vielleicht könnten Sie eine abstrakte Methode haben, die von der Basisklasse ctor aufgerufen wird?

+1

Die Tatsache, dass Sie das Gefühl haben, dass Sie das tun müssen, weist darauf hin, dass Ihr Design oder Ihr Denken einen Fehler aufweist. Ich würde vorschlagen, sorgfältig über Ihre Motive nachzudenken, um dies zu versuchen. – NeilDurant

+0

Richtig, deshalb frage ich, was das Ziel hier ist. –

Verwandte Themen