Powiedzmy mam następujące klasyWywołanie ogólne metody z dynamicznym typu
public class Animal { .... }
public class Duck : Animal { ... }
public class Cow : Animal { ... }
public class Creator
{
public List<T> CreateAnimals<T>(int numAnimals)
{
Type type = typeof(T);
List<T> returnList = new List<T>();
//Use reflection to populate list and return
}
}
Teraz w niektórych kodu później chcę czytać w jakie zwierzę utworzyć.
Creator creator = new Creator();
string animalType = //read from a file what animal (duck, cow) to create
Type type = Type.GetType(animalType);
List<animalType> animals = creator.CreateAnimals<type>(5);
Problem polega na tym, że ostatni wiersz jest nieprawidłowy. Czy istnieje jakiś elegancki sposób, aby to zrobić?
Generics nie są tak naprawdę do zrobienia, powinieneś po prostu utworzyć listę zamiast tego i użyć Activator do utworzenia klas pochodnych. –
Doggett