使用内部构造函数实例化类

我有一个类,它的构造函数被定义为internal,这意味着我不能实例化它。虽然这可能是有道理的,但出于调试和研究目的,我还是想做一次

有可能通过反射来实现吗?我知道我可以访问私有/内部成员,但我可以调用内部构造函数吗

或者,由于构造函数不做任何重要的事情,我可以使用反射说“看,只给我一个类的实例而不调用构造函数,我将手动完成它的工作”吗

性能和“稳定性”在这里不是问题,因为它不是生产代码

编辑:正如澄清:遗憾的是,我不控制另一个程序集,也没有它的源代码,我只是试图理解它是如何工作的,因为它的文档几乎不存在,但我应该与它交互

另一种方法是将调用程序集指定为“朋友”程序集

只需将其添加到包含内部构造函数的程序集的AssemblyInfo.cs文件中:

[程序集:InternalsVisibleTo(“Calling.assembly”)]

如果您无权访问程序集,还可以直接调用构造函数(使用反射):

MyClass obj=(MyClass)typeof(MyClass).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null,Type.EmptyTypes,null).Invoke(null);

发表评论