Czy można uzyskać następujący kod? Wiem, że to nie działa, ale zastanawiam się, czy istnieje obejście?
Type k = typeof(double);
List<k> lst = new List<k>();
Czy można uzyskać następujący kod? Wiem, że to nie działa, ale zastanawiam się, czy istnieje obejście?
Type k = typeof(double);
List<k> lst = new List<k>();
Odpowiedzi:
Tak jest:
var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);
Czystszym sposobem może być użycie metody ogólnej. Zrób coś takiego:
static void AddType<T>()
where T : DataObject
{
Indexes.Add(typeof(T), new Dictionary<int, T>());
}