2011-11-28 114 views
1

這裏是我的一個項目的剝離下來的片段:如何獲得泛型類之外的實際泛型參數?

接口部分:

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

這個問題似乎有點含糊,但我明白,你要求一種更簡單的方式來查詢實例的T值,實例化類型的類型參數。我知道要做到這一點的唯一方法就是通過一種方法,就像你所做的一樣。我認爲你已經有了最好的解決方案。