Как связать конструкторы в иерархию классов?

У нас есть следующая иерархия классов:

public class Base
{
    public Base()
    {
        // do generic initialization 
    }

    public Base(SomeClass param1) : this()
    {
        // init properties that require param1
    }

    public Base(SomeClass param1, OtherClass param2) : this(param1)
    {
        // init properties that require param2
    }

    // ...
}

public class Derived : Base
{
    public Derived()
    {
        // do custom initialization 
    }

    public Derived(SomeClass param1) : this() // ???
    {
        // do custom initialization using param1
    }

    public Derived(SomeClass param1, OtherClass param2) : this(param1) // ???
    {
        // do custom initialization using param2
    }

    // ...
}

Нам потребуется Derived для запуска как собственных процедур инициализации, вверх по цепочке, так и соответствующих процедур из базового класса. Как связать конструкторы без дублирования кода / двойного запуска некоторых конструкторов?

7
задан Mihai 11 August 2011 в 15:33
поделиться