代码之家  ›  专栏  ›  技术社区  ›  Qwertie

如何使用反射获取默认构造函数?

  •  0
  • Qwertie  · 技术社区  · 15 年前

    我正在编写一个库,它在运行时动态生成抽象类的派生类。派生类的构造函数需要 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!
    }
    

    请注意 GetConstructor 退货 无效的 Test ,即使测试不是抽象的。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Qwertie    15 年前

    我想出来了。我忘了那个 BindingFlags.Instance

    ConstructorInfo constructor = typeof(Test).GetConstructor(System.Type.EmptyTypes);
    

    返回null。它有缺陷吗?