在考慮調用接口內成員函數的具體實現時,就會發現由于組件的特殊性,這種實現需要與通常完全不同的規范. 需要解決的問題有:源程序中如何標識一個組件(物理上,就是一段已經存在了的,具有一定功能的二進制代碼),對于組件內特定函數的調用,編譯器將如何做出處理,如何進行參數的檢驗及返回值的收集.
在舊的編程模式中,以上問題的解決均需要一個對組件進行充分定義的說明性文件.而且,該說明性文件的格式必須完全符合所用的編程語言的語法.這就產生了以下一些矛盾.首先,為每一個發行組件均配置各種不同版本的說明文件在實踐中并不可行;第二,即使這樣的頭文件通過類型庫自動轉換得到,為各種編程語言提供這種轉換工具同樣是不可行的;第三,組件中所用到的數據類型并不一定總能與目標編稱語言一一對應;第四,這種笨拙的實現方法,與構件的"即插即用"概念相去甚遠,程序員難以接受.
針對以上問題,COM規范提出了自動化技術,較好的實現了以符號為導航的動態綁定. Idispatch是實現這一點的關鍵接口.
Class Idispatch : public Iunknown
{
public:
virtual HRESULT GetTypeInfoCount(UINT * pctinfo) = 0;
virtual HRESULT GetTypeInfo(UINT iTinfo,LCID
lcid,ItypeInfo ** ppTInfo) = 0;
文章來源于領測軟件測試網 http://www.kjueaiud.com/