我有一个类,其构造函数定义为内部类,这意味着我无法实例化它。虽然这可能有道理,但出于调试和研究目的,我仍然想做一次。
是否可以通过反射来实现?我知道我可以访问私有(private)/内部成员,但我可以调用内部构造函数吗?
或者,由于构造函数不做任何重要的事情,我可以使用反射说“看,只要给我一个类的实例而不调用构造函数,我将手动完成它”?
性能和“稳定性”在这里不是问题,因为它不是生产代码。
编辑: 正如澄清:可悲的是,我不控制另一个程序集,也没有它的源代码,我只是想了解它是如何工作的,因为它的文档是非-存在,但我应该与之交互。
最佳答案
另一种方法是将调用程序集指定为“ friend ”程序集。
只需将其添加到包含内部构造函数的程序集的 AssemblyInfo.cs 文件中:
[assembly: InternalsVisibleTo("Calling.Assembly")]
如果你没有权限访问程序集,你也可以直接调用构造函数(使用反射):
MyClass obj = (MyClass) typeof(MyClass).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, Type.EmptyTypes, null).Invoke(null);
关于c# - 使用内部构造函数实例化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1199590/