我已經在Delphi 2010中編寫了一個小型COM服務器,充當零售應用程序的插件。零售應用程序尋找一個「發現」接口,該接口註冊了任何數量的附加接口,每個接口調用TAutoObjectFactory.Create
。這工作得很好 - 所有的插件接口按照設計工作。我發現了ComClass,現在我該如何引用它?
但現在我想從另一個接口調用一個接口的公共方法,所以我不必重複代碼。看起來很簡單,只需撥打ComClassManager.ForEachFactory
尋找我需要使用的接口的ClassID。也有工作!
但是現在我發現了這個類,我被一個看似微不足道的最後一步所困惑:如何使用或投射類(或類引用?)我找到了實際調用其方法之一的方法。
在我發送到ForEachFactory
的「FactoryProc」中,我假設TComObjectFactory
的ComClass屬性是我所追求的,但它是TClass類型的,它是指向它指向的實際類對象的類引用至少我希望我正確理解這一點)。我對類引用有些模糊,並且我試圖轉換或以其他方式解除引用此屬性導致訪問衝突或編譯器錯誤。
有什麼建議嗎?
我開始懷疑ComClassManager是否有一個類引用列表,但沒有在運行時創建的實際對象列表。也許這就是爲什麼當我嘗試使用ComClass作爲對象時,我一直在訪問違規。它被稱爲「ComClassManager」而不是ComObjectManager ... – 2013-02-19 17:56:44