C # Определение длины генерика, созданного с помощью Reflection

2

У меня такой код:

Type typPrecise = MostPrecise(typeof(int), typeof(double));//Evaluates to double

var varGeneric = typeof(Number<>);
var varSpecific = varGeneric.MakeGenericType(typPrecise);
dynamic nmNumber = Activator.CreateInstance(varSpecific);

nmNumber имеет динамический тип и, по существу, создает общий номер. Как я могу указать количество элементов в Number.

Я в основном хочу это сделать, но используя динамический код выше:

Number<typPrecise> whatever = new Number<typPrecise>(10);

Ответ с использованием понятий 4.0 приветствуется.

  • 1
    пожалуйста, бросьте венгерский!
Теги:
generics

1 ответ

3
Лучший ответ

Вызвать перегрузку Activator.CreateInstance, которая принимает аргументы конструктора:

dynamic nmNumber = Activator.CreateInstance(varSpecific, new object[] { 10 });

Кстати, обратите внимание, что конструктор List<T>(int) устанавливает начальную емкость List, а не начальное количество элементов (Count). Начальный граф всегда равен 0.

  • 0
    Как я не узнал о перегрузке CreateInstance, содержащей аргументы? Doh!
  • 0
    Таким образом, 10 в объекте [] просто указывает количество элементов. Он не добавляет объект [] с одним элементом из 10?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню