Jeśli BaseFruitma konstruktora, który akceptuje int weight, czy mogę utworzyć egzemplarz owocu za pomocą ogólnej metody takiej jak ta?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Przykład został dodany za komentarzami. Wydaje się, że mogę to zrobić tylko wtedy, gdy podam BaseFruitkonstruktor bez parametrów, a następnie wypełnię wszystko przez zmienne składowe. W moim prawdziwym kodzie (nie o owocach) jest to raczej niepraktyczne.
-Aktualizacja-
Wygląda więc na to, że nie można w żaden sposób rozwiązać ograniczeń. Z odpowiedzi istnieją trzy kandydujące rozwiązania:
- Wzór fabryczny
- Odbicie
- Aktywator
Wydaje mi się, że odbicie jest najmniej czyste, ale nie mogę się zdecydować między pozostałymi dwoma.