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

本文关键字:创建 对象 实例 构造函数 内部 何通过 反射 | 更新日期: 2023-09-27 18:34:16

示例:

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

我不明白为什么我不能使用内部构造函数在程序集内创建一个实例。此构造函数应在执行程序集中可用。对于这个大会来说,它应该像公共一样工作。

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

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

var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic

MyClass 中的构造函数是内部的 尝试更改为公共

public class MyClass
{
    public MyClass()
    {
    }
}

将 true 传递给创建实例

var myClass = Activator.CreateInstance(typeof(MyClass),true );