Использование отражения C# для вызова конструктора
у меня есть следующий сценарий:
class Addition{
public Addition(int a){ a=5; }
public static int add(int a,int b) {return a+b; }
}
Я вызываю add в другом классе:
string s="add";
typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22
мне нужен способ, аналогичный приведенному выше оператору отражения, чтобы создать новый объект добавления типа с помощью Addition(int a)
так что у меня есть строка s= "Addition"
, Я хочу создать новый объект с помощью отражения.
это возможно?
2 ответа:
не думаю
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