问题是Activator.CreateInstance(Type, object[])
不考虑非公共构造函数。
MissingMethodException:找不到匹配的公共构造函数。
通过将构造函数更改为public
可见性可以很容易地看出这一点。该代码然后可以正常工作。
这是一种变通方法(已测试):
BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
CultureInfo culture = null; // use InvariantCulture or other if you prefer
object instantiatedType =
Activator.CreateInstance(typeToInstantiate, flags, null, parameter, culture);
//using the overload: public static object CreateInstance(Type type, bool nonPublic)
object instantiatedType = Activator.CreateInstance(typeToInstantiate, true)