我继承了一个包含 COM DLL 的项目。我对 COM 有点陌生,但似乎有些不对劲。IDL 中定义的接口仅使用VARIANT
所有属性和方法返回/参数的类型。这有什么可能的理由吗?我有一种感觉,以前的开发人员只是在做一些事情,但我想确定一下。
这是我的 IDL 的样子:
interface IMyComInterface : IDispatch
{
[id(1), helpstring("method CheckMessage")] HRESULT CheckMessage([in] VARIANT vMsg);
[id(2), helpstring("method CheckFolder")] HRESULT CheckFolder([in] VARIANT Folder, [out] VARIANT *pCount, [out, retval] VARIANT *pErrorCount);
[propget, id(3), helpstring("property Flags")] HRESULT Flags([out, retval] VARIANT *pVal);
[propput, id(3), helpstring("property Flags")] HRESULT Flags([in] VARIANT newVal);
[propget, id(4), helpstring("property MessageStore")] HRESULT MessageStore([out, retval] VARIANT *pVal);
[propput, id(4), helpstring("property MessageStore")] HRESULT MessageStore([in] VARIANT newVal);
[propget, id(5), helpstring("property Directory")] HRESULT Directory([out, retval] VARIANT *pVal);
[propput, id(5), helpstring("property Directory")] HRESULT Directory([in] VARIANT newVal);
[propget, id(6), helpstring("property MessageCount")] HRESULT MessageCount([out, retval] VARIANT *pVal);
};
非常感谢。
编辑:
为了清楚起见,所有这些VARIANT
s 都可以用显式类型代替。