Instanz des generischen Typs erstellen?

Wenn BaseFruit hat einen Konstruktor akzeptiert ein int weight können instanziiere ich ein Stück Obst in eine generische Methode wie diese?

public void AddFruit<T>()where T: BaseFruit{
    BaseFruit fruit = new T(weight); /*new Apple(150);*/
    fruit.Enlist(fruitManager);
}

Wurde ein Beispiel Hinzugefügt, die hinter die Kommentare. Es scheint, ich kann dies nur tun, wenn ich BaseFruit einen parameterlosen Konstruktor und füllen Sie dann alles über member-Variablen. In meinem wirklichen code (nicht etwa die Früchte), diese ist eher unpraktisch.

-Update-
So scheint es, es nicht gelöst werden kann, indem Sie Einschränkungen in irgendeiner Art und Weise dann. Aus den Antworten gibt es drei Kandidaten-Lösungen:

  • Fabrik-Muster
  • Reflexion
  • Aktivator

Ich dazu neigen zu denken, die Reflexion, ist das zumindest sauber, aber ich kann mich nicht entscheiden zwischen den beiden anderen.

InformationsquelleAutor der Frage Boris Callens | 2009-04-08

Schreibe einen Kommentar