Как передать параметры Activator.CreateInstance ()

Я хочу создать экземпляр типа, который я указываю в общем методе, который у меня есть. Этот тип имеет несколько перегруженных конструкторов. Я хотел бы передать аргументы конструкторам, но

Activator.CreateInstance() 

не видит, чтобы это было как опция.

Есть ли другой способ сделать это?

Да.

 (T)Activator.CreateInstance(typeof(T), param1, param2); 

Существует еще один способ передать аргументы CreateInstance через именованные параметры.

Исходя из этого, вы можете передать массив в CreateInstance . Это позволит вам иметь 0 или несколько аргументов.

 public T CreateInstance(params object[] paramArray) { return (T)Activator.CreateInstance(typeof(T), args:paramArray); } 

В качестве альтернативы Activator.CreateInstance FastObjectFactory в привязанных url-заготовках лучше, чем Activator (с .NET 4.0 и значительно лучше, чем .NET 3.5). Никаких тестов / статистических данных с .NET 4.5). См. Сообщение StackOverflow для статистики, информации и кода:

Как передать ctor args в Activator.CreateInstance или использовать IL?

Имейте в виду, что передаваемые аргументы в Activator.CreateInstance имеют значительную разницу в производительности против создания без параметров.

Существуют лучшие альтернативы для динамического создания объектов с использованием предварительно скомпилированной лямбды. Конечно, всегда производительность субъективна, и она явно зависит от каждого случая, если она того стоит или нет.

Подробная информация о проблеме в этой статье.

График берется из статьи и представляет время, затраченное на мс на 1000 вызовов.

Сравнение производительности

  • Общий метод всех элементов управления
  • Статический общий class как словарь
  • Объяснение принципа get-put
  • Java generics - почему «extends T» разрешен, но не «реализует T»?
  • Как использовать reflection для вызова общего метода?
  • Невозможно добавить значение в коллекцию Java с подстановочным общим типом
  • Ошибка создания общего массива
  • Статический метод в общем classе?
  • явно накладывать параметры типового типа на любой интерфейс
  • В C #, почему объект List не может быть сохранен в переменной List
  • Как узнать, какой тип каждого объекта находится в ArrayList ?
  • Давайте будем гением компьютера.