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

来自泛型参数类的类引用

  •  3
  • Nat  · 技术社区  · 16 年前

    我有一个持久性框架,我正在尝试使用泛型,这样我就不必一直为每种类型的对象创建新的列表类,我希望以一种类型安全的方式存储这些对象。

    我有一个方法,它返回列表类中所包含对象的类(因此我知道要运行哪些查询以及要创建哪个对象)。

    例如,它看起来像这样:

    type
    
      TMyObject = class
    
      end;
      TMyObjectClass = class of TMyObject;
    
    
      TMyObjectList = class
      public
        function ListClass: TMyObjectClass; virtual; abstract;
    
      end;
    
      TMyObjectList<T: TMyObject, constructor> = class(TMyObjectList)
      public
        function ListClass: TMyObjectClass; override;
    
      end;
    
    implementation
    
    { TMyObjectList<T> }
    
    function TMyObjectList<T>.ListClass: TMyObjectClass;
    begin
      result := T;  //  <==== this wont compile
    end;
    
    end.
    

    在这种情况下,是否有返回泛型参数类的方法?

    谢谢

    n@ (使用Delphi 2009)

    2 回复  |  直到 16 年前
        1
  •  6
  •   Mason Wheeler    16 年前

    这是 a known issue in Delphi 2009. 它已于2010年修复。我刚测试过,你的代码在那里编译得很好。

        2
  •  0
  •   vIceBerg    16 年前

    t不是对象的实例。

    在您的特定示例中,您应该编写如下内容:

    结果:=自我;

    我觉得你找错方向了…