如何通过反射使用内部构造函数创建类的对象实例
本文关键字:创建 对象 实例 构造函数 内部 何通过 反射 | 更新日期: 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 );