Klonowa klasa pochodna od metody klasy bazowej

Mam abstrakcyjną klasę bazowąBase który ma kilka wspólnych właściwości i wiele pochodnych, które implementują inną logikę, ale rzadko mają dodatkowe pola.

public abstract Base
{
    protected int field1;
    protected int field2;
    ....

    protected Base() { ... }
}

Czasami muszę sklonować klasę pochodną. Więc zgaduję, po prostu zrób wirtualnyClone metoda w mojej klasie bazowej i nadpisuję ją tylko w klasach pochodnych, które mają dodatkowe pola, ale oczywiście mojeBase klasa nie byłaby już abstrakcyjna (co nie stanowi problemu, ponieważ ma tylkoprotected konstruktor).

public Base
{
    protected int field1;
    protected int field2;
    ....

    protected Base() { ... }

    public virtual Base Clone() { return new Base(); }
}

public A : Base { }
public B : Base { }

Rzecz w tym, że skoro nie mogę znać typu klasy pochodnej w mojej Bazie, czy nie doprowadziłoby to do powstania klasyBase instancja klasy, nawet jeśli nazywam ją pochodną? (a.Clone();) (właściwie po teście tak się dzieje, ale być może mój test nie był dobrze zaprojektowany, dlatego mam co do tego wątpliwości)

Czy istnieje dobry sposób (wzorzec) na wdrożenie bazyClone metoda, która działałaby tak, jak się tego spodziewam, czy muszę napisać ten sam kod w każdej klasie pochodnej (naprawdę chciałbym tego uniknąć ...)

Dzięki za pomoc

questionAnswers(7)

yourAnswerToTheQuestion