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

本文关键字:内部 构造函数 实例 参数 何使用 反射 创建 | 更新日期: 2023-09-27 18:02:42

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

我试了下面的方法,但都不起作用。

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。我被卡住了,有人有解决办法吗?

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

我自己找到了解决办法。以下是我所做的。

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

我希望这能帮助到别人。欢呼:)