如何在泛型类之外获取实际泛型参数?

时间:2011-11-28 03:31:26

标签: delphi generics

这是我的一个项目的精简片段:

界面部分:

type
  TMainFormView<T:TCustomForm> = class(TInterfacedObject, IMainFormView)
  private
    ...
  protected
    function GetMainFormClass: TCustomFormClass;
    //
    property MainFormClass:TCustomFormClass read GetMainFormClass;
  public
    ...
  end;

实施部分:

function TMainFormView<T>.GetMainFormClass: TCustomFormClass;
begin
  Result:= T;
end;

我已经重构了它并且前者的实现非常丑陋相信我(我使用了一个内部类,我最近发现它是一个矫枉过正而且不优雅)。

还有其他更好的方法来编码吗?我的目的是能够提取T的“具体”类并通过受保护的属性公开它。

1 个答案:

答案 0 :(得分:1)

这个问题看起来有点模糊,但我理解你要求一种更简单的方法来查询实例的T值,即实例化类型的类型参数。我知道这样做的唯一方法是通过一种方法,就像你所做的那样。我认为你已经有了最好的解决方案。