在考虑调用接口内成员函数的具体实现时,就会发现由于组件的特殊性,这种实现需要与通常完全不同的规范. 需要解决的问题有:源程序中如何标识一个组件(物理上,就是一段已经存在了的,具有一定功能的二进制代码),对于组件内特定函数的调用,编译器将如何做出处理,如何进行参数的检验及返回值的收集.
在旧的编程模式中,以上问题的解决均需要一个对组件进行充分定义的说明性文件.而且,该说明性文件的格式必须完全符合所用的编程语言的语法.这就产生了以下一些矛盾.首先,为每一个发行组件均配置各种不同版本的说明文件在实践中并不可行;第二,即使这样的头文件通过类型库自动转换得到,为各种编程语言提供这种转换工具同样是不可行的;第三,组件中所用到的数据类型并不一定总能与目标编称语言一一对应;第四,这种笨拙的实现方法,与构件的"即插即用"概念相去甚远,程序员难以接受.
针对以上问题,COM规范提出了自动化技术,较好的实现了以符号为导航的动态绑定. Idispatch是实现这一点的关键接口.
Class Idispatch : public Iunknown
{
public:
virtual HRESULT GetTypeInfoCount(UINT * pctinfo) = 0;
virtual HRESULT GetTypeInfo(UINT iTinfo,LCID
lcid,ItypeInfo ** ppTInfo) = 0;
文章来源于领测软件测试网 https://www.ltesting.net/