Использование рефлекса C # для вызова конструктора

У меня есть следующий сценарий:

class Addition{ public Addition(int a){ a=5; } public static int add(int a,int b) {return a+b; } } 

Я призываю добавить в другой class:

 string s="add"; typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22 

Мне нужен способ, аналогичный описанному выше выражению отражения, для создания нового объекта типа Addition с использованием Addition(int a)

Поэтому у меня есть строка s= "Addition" , я хочу создать новый объект с использованием отражения.

Это возможно?

    Я не думаю, что GetMethod сделает это, нет, но GetConstructor будет.

     using System; using System.Reflection; class Addition { public Addition(int a) { Console.WriteLine("Constructor called, a={0}", a); } } class Test { static void Main() { Type type = typeof(Addition); ConstructorInfo ctor = type.GetConstructor(new[] { typeof(int) }); object instance = ctor.Invoke(new object[] { 10 }); } } 

    EDIT: Да, Activator.CreateInstance тоже будет работать. Используйте GetConstructor если вы хотите получить больше контроля над вещами, узнать имена параметров и т. Д. Activator.CreateInstance отлично работает, если вы просто хотите вызвать конструктор.

    Да, вы можете использовать Activator.CreateInstance

    Interesting Posts

    Как «Un-Eject» флэш-накопитель USB – Извлекать легко (безопасно удалять аппаратные средства), но как насчет Un-Eject или Reconnect?

    Как удалить защиту из файла PDF?

    Каково максимальное количество разделов, которые можно сделать на жестком диске?

    Массив размером 0

    Есть ли способ защитить паролем папку Dropbox на моем рабочем компьютере?

    Приложение для группировки окон вместе

    Печать на Java в Label Printer

    Fortran выделяет выделяемый массив в gdb

    java.lang.IllegalStateException: путь к исполняемому файлу драйвера должен быть задан с помощью свойства webdriver.chrome.driver

    Какова максимальная длина в символах, необходимых для представления любого двойного значения?

    Увеличение максимального количества подключений Google Chrome на сервер до более чем 6

    iText – добавление содержимого в существующий файл PDF

    Фреймбуфер недоступен. Как установить устройство / dev / fb / 0 на Ubuntu?

    Запись звука из радиопотока

    Замок Виндзорский резольвер для MVC 3

    Давайте будем гением компьютера.