我有一些类似的事情:
object[] parameter = new object[1];
parameter[0] = x;
object instantiatedType =
Activator.CreateInstance(typeToInstantiate, parameter);
and
internal class xxx : ICompare<Type>
{
private object[] x;
# region Constructors
internal xxx(object[] x)
{
this.x = x;
}
internal xxx()
{
}
...
}
我得到:
引发异常:System.MissingMethodException:未找到类型“xxxx.xxx”的构造函数。
有任何想法吗?
问题是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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)