示例:
class Program
{
static void Main(string[] args)
{
var myClass = Activator.CreateInstance(typeof(MyClass));
}
}
public class MyClass
{
internal MyClass()
{
}
}
例外:
system.missingMethodException而
没有为此对象定义无参数构造函数。
解决方案:
var myClass = Activator.CreateInstance(typeof(MyClass), nonPublic:true);
我无法理解,为什么我无法使用内部构造函数在程序集内创建实例。此构造函数应该在执行程序集中可用。对于这次集会,它应该像公众一样工作。
答案 0 :(得分:17)
这不是不可能的。你要告诉它不是公众。
var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic
答案 1 :(得分:0)
MyClass中的构造函数是内部尝试更改为公共
public class MyClass
{
public MyClass()
{
}
}
或
将true传递给CreateInstance
var myClass = Activator.CreateInstance(typeof(MyClass),true );