Se BaseFruit
tem um construtor que aceita um int weight
, posso instanciar um pedaço de fruta em um método genérico como este?
public void AddFruit<T>()where T: BaseFruit{
BaseFruit fruit = new T(weight); /*new Apple(150);*/
fruit.Enlist(fruitManager);
}
Um exemplo é adicionado atrás dos comentários. Parece que só posso fazer isso se der BaseFruit
um construtor sem parâmetros e preencher tudo através de variáveis-membro. No meu código real (não sobre frutas), isso é bastante impraticável.
-Update-
Então parece que não pode ser resolvido por restrições de qualquer forma então. Das respostas, há três soluções candidatas:
- Padrão de fábrica
- Reflexão
- Activator
Costumo pensar que a reflexão é a menos limpa, mas não consigo decidir entre as outras duas.