如何使用反射来获取默认构造函数?
我正在编写一个在运行时动态生成抽象类的派生类的库。派生类的构造函数需要基类构造函数的 MethodInfo
才能调用它。但是,由于某种原因,Type.GetConstructor()
返回 null
。例如:
abstract class Test
{
public abstract void F();
}
public static void Main(string[] args)
{
ConstructorInfo constructor = typeof(Test).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Public,
null, System.Type.EmptyTypes, null); // returns null!
}
请注意,即使我在 Test
中显式声明构造函数,并且即使 Test 不是抽象的,GetConstructor
也会返回 null
。
I am writing a library that generates derived classes of abstract classes dynamically at runtime. The constructor of the derived class needs a MethodInfo
of the base class constructor so that it can invoke it. However, for some reason Type.GetConstructor()
returns null
. For example:
abstract class Test
{
public abstract void F();
}
public static void Main(string[] args)
{
ConstructorInfo constructor = typeof(Test).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Public,
null, System.Type.EmptyTypes, null); // returns null!
}
Note that GetConstructor
returns null
even if I explicitly declare a constructor in Test
, and even if Test is not abstract.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
想通了。我忘记了
BindingFlags.Instance
标志。奇怪的是
返回null。是否有缺陷?
Figured it out. I forgot the
BindingFlags.Instance
flag.The strange thing is that
returns null. Is it defective?