Wenn BaseFruit
ein Konstruktor einen akzeptiert int weight
, kann ich ein Stück Obst in einer generischen Methode wie dieser instanziieren?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Ein Beispiel wird hinter Kommentaren hinzugefügt. Es scheint, dass ich dies nur tun kann, wenn ich BaseFruit
einen parameterlosen Konstruktor gebe und dann alles über Mitgliedsvariablen ausfülle. In meinem wirklichen Code (nicht über Obst) ist dies ziemlich unpraktisch.
-Update-
Es scheint also, dass es dann in keiner Weise durch Einschränkungen gelöst werden kann. Aus den Antworten ergeben sich drei mögliche Lösungen:
- Fabrikmuster
- Reflexion
- Aktivator
Ich neige dazu zu denken, dass Reflexion die am wenigsten saubere ist, aber ich kann mich nicht zwischen den beiden anderen entscheiden.