2010-07-23 22 views

Odpowiedz

8

W IL to jest możliwe. W języku C#: nie.

Ty może używać virtual uruchomić się metody w rodzaju tego TYP przed ctor, ale to nie jest zalecane i ryzykowne. Ale:

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

Jest to zły pomysł, ponieważ nie można zagwarantować, że podklasy są gotowy dla metody-call.

+0

+1 dla odradzających się! –

0

Co próbujesz osiągnąć? Być może mógłbyś mieć abstrakcyjną metodę, która jest wywoływana z ctor klasy podstawowej?

+1

To, co czujesz, że musisz to zrobić, oznacza dla mnie pewną wadę w twoim projekcie lub twoim myśleniu. Sugerowałbym uważne rozważenie waszych motywów, aby spróbować to zrobić. – NeilDurant

+0

Właśnie, dlatego pytam, jaki jest cel. –

Powiązane problemy