6

例子:

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);

我不明白,为什么我不能在带有内部构造函数的程序集中创建一个实例。此构造函数应该在执行程序集中可用。对于这个程序集,它应该像 public 一样工作。

4

2 回答 2

18

这并非不可能。你必须告诉它不是公众。

var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic
于 2013-10-08T06:55:30.120 回答
0

MyClass 中的构造函数是 Internal 尝试更改为 public

public class MyClass
{
    public MyClass()
    {
    }
}

或者

将 true 传递给 CreateInstance

var myClass = Activator.CreateInstance(typeof(MyClass),true );
于 2013-10-08T06:59:11.793 回答