您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用反射实例化内部类中带有参数的构造函数

使用反射实例化内部类中带有参数的构造函数

问题是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)
其他 2022/1/1 18:19:55 有374人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶