Jeśli BaseFruit
ma konstruktora, który akceptuje int weight
, mogę utworzyć wystąpienie kawałek owoców w ogólnej metody, takie jak to?Utwórz wystąpienie typu ogólnego?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Przykład jest dodawany za komentarzami. Wygląda na to, że mogę to zrobić, jeśli podam BaseFruit
konstruktor bez parametrów, a następnie wypełnię wszystko przez zmienne składowe. W moim prawdziwym kodzie (nie o owocach) jest to raczej niepraktyczne.
-Update-
Wydaje się więc, że nie może być rozwiązany przez ograniczenia w jakikolwiek sposób wtedy. Z odpowiedzi są trzy rozwiązania kandydujące:
- Fabryka Wzór
- Odbicie
- Activator
staram się myśleć odbicie jest czyste najmniej jeden, ale nie mogę się zdecydować pomiędzy pozostałe dwie.
Przy okazji: dziś prawdopodobnie rozwiązałbym to z wybraną biblioteką IoC. –