我想写一个简单的IDispatch接口,有一些问题请教(似乎比较难)
我的设想:
在Win32 Dynamic-Link Library中
定义一个纯虚类,其内有Invoke函数,类似IDispatch接口中的Invoke,但是只有输入和输出参数完全相同,其他参数砍掉。
继承这个纯虚类的子类:在构造函数中给实现具体功能的类的方法编号(ID),制作一个ID和方法的函数指针的对应表;实现Invoke函数,在Invoke中的实现是一个根据ID号的switch,根据ID和函数指针对照表执行方法。
在这种情况下,我们的dll只需要引出一个API——CreateInstance,其功能是new一个子类,将子类的指针赋给那个纯虚父类,屏蔽掉真实实现细节。
在调用时,我们需要事先知道函数的ID,不需要GetIDsOfNames函数,我知道这样不太好,但是这样可以节约执行时间——是不是?
实现方式完全基本上使用STL,尽量不使用微软的东西。
我现在的问题是:1、学识所限,底气不足,各位大虾,这招是否可行?
2、有人说使用DISPPARAMS类型和VARIANT类型,执行时很耗时间,是否如此?
3、使用Invoke,统一,通用的调用方法,有没有好点的参数类型,我是说除了DISPPARAMS类型和VARIANT类型以外,有没有能够包容大多数类型的结构?