这是我的一个项目的精简片段:
界面部分:
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的“具体”类并通过受保护的属性公开它。
答案 0 :(得分:1)
这个问题看起来有点模糊,但我理解你要求一种更简单的方法来查询实例的T值,即实例化类型的类型参数。我知道这样做的唯一方法是通过一种方法,就像你所做的那样。我认为你已经有了最好的解决方案。