问题是
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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)