2010-02-06 91 views

回答

20

從技術上講,只要界面有一個GUID,並且您關心的類位於單元的界面部分。

RTTI單元尚未具有用於描述類實現的所有接口的API,但數據位於類型信息中。

的GUID對於接口類型可以從這個表達式得到:

GetTypeData(TypeInfo(ITheInterface))^.Guid 

或:

ctx: TRttiContext; 
// ... 
(ctx.GetType(TypeInfo(ITheInterface)) as TRttiInterfaceType).GUID 

的類實例類型的然後可以使用TClass.GetInterfaceEntry(IID)檢查 - 如果它返回非-nil,類實現接口。

可以通過TRttiContext.GetTypes檢索在單元的接口部分中聲明的所有類。

編寫實際的迭代和提取代碼留給讀者練習。