如何通过反射使用内部构造函数创建类的对象实例?

时间:2013-10-08 06:51:00

标签: c# reflection instance

示例:

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

我无法理解,为什么我无法使用内部构造函数在程序集内创建实例。此构造函数应该在执行程序集中可用。对于这次集会,它应该像公众一样工作。

2 个答案:

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