我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:
问题是我希望该构造函数是内部的,但将其标记为内部会导致MissingMethodException错误,但构造函数在同一程序集中。 如果将其设置为公共,则可以正常工作。
我尝试了这里提供的解决方案 如何通过反射创建具有内部构造函数的类的对象实例? 和这里 使用反射在内部类中实例化具有参数的构造函数 这意味着要这样做:
我有一个工厂类需要实例化一个未知类。 它使用以下方式:
public class Factory
{
public void SetFoo(Type f)
{
Activator.CreateInstance(f);
}
}
问题是我希望该构造函数是内部的,但将其标记为内部会导致MissingMethodException错误,但构造函数在同一程序集中。 如果将其设置为公共,则可以正常工作。
我尝试了这里提供的解决方案 如何通过反射创建具有内部构造函数的类的对象实例? 和这里 使用反射在内部类中实例化具有参数的构造函数 这意味着要这样做:
Activator.CreateInstance(f,true)
但是没有成功...
我正在使用NETStandard.Library(1.6.1)和System.Reflection(4.3.0)
更新:
在此更新时提供的答案指引了我正确的方向:
var ctor = f.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic);
var instance = (f)ctor[0].Invoke(null);
谢谢大家!
Activator.CreateInstance(f,true)
对于我来说在使用内部构造函数时运行良好。你能提供一个可重现的示例吗? - René Vogt