如何使用Reflection创建带有参数的内部构造函数的实例?

时间:2015-07-15 09:35:06

标签: c# reflection system.reflection

我有一个不同的场景。我需要创建一个公共类的实例,但其所有构造函数都是内部的。该类没有默认构造函数。

我尝试了以下方法,但它没有用。

Activator.CreateInstance(typeof(ClassName));
Activator.CreateInstance(typeof(ClassName), nonpublic:true);
Activator.CreateInstance(typeof(ClassName),true);
Activator.CreateInstance(typeof(ClassName), new object[]{double,bool});

我也试过这个,但结果是System.MissingMethodException。

var constructors = typeof(ClassName).GetConstructors();
foreach(var ctor in constructors)
    ctor.Invoke(new object[] {double, bool});

无法在Xamrarin中使用BindingFlags 。我被卡住了,有人有解决方案吗?

1 个答案:

答案 0 :(得分:5)

我自己找到了解决方案。这就是我所做的。

ConstructorInfo info = typeof(ClassName).GetTypeInfo().DeclaredConstructors.First();
ClassName e = info.Invoke(new object[] { parameters }) as ClassName;

我希望这可以帮助某人。干杯:)