C#可以访问继承自IUnknown接口的com吗?

时间:2022-08-30 23:19:30
一个c++写的com,继承自Iunknown接口,而不是IDispatch,
c#可以调用这个com吗?
c#中的ComInterfaceType枚举又是干什么的?
如果在声明com的时候,声明成InterfaceIsIUnknown,是说原始的com是继承自Iunknown接口吗?

3 个解决方案

#1


1、没实际试过,但应该是可以的,毕竟C#又不是不支持指针,如不支持的话,岂不太弱了
2、这个用于指示C#导出到COM时的接口类型,也就是说是在用C#写COM组件时用的。而C#导入COM的时候还有一个TypeLibType特性和TypeLibTypeFlags枚举
3、是只支持IUnknown,如上面所说,是C#导出到COM的接口类型

#2


明白了。
c#是否可以调用com不在于这个com是继承自IDispatch还是IUnknown,
而在于接口定义前有没有id号,如下:
interface IMyComServer : IUnknown{
[id(1)] HRESULT MyCOMServerMethod(void);
这样的com c#就可以访问。

#3


这样啊,这个以前还真没注意到

#1


1、没实际试过,但应该是可以的,毕竟C#又不是不支持指针,如不支持的话,岂不太弱了
2、这个用于指示C#导出到COM时的接口类型,也就是说是在用C#写COM组件时用的。而C#导入COM的时候还有一个TypeLibType特性和TypeLibTypeFlags枚举
3、是只支持IUnknown,如上面所说,是C#导出到COM的接口类型

#2


明白了。
c#是否可以调用com不在于这个com是继承自IDispatch还是IUnknown,
而在于接口定义前有没有id号,如下:
interface IMyComServer : IUnknown{
[id(1)] HRESULT MyCOMServerMethod(void);
这样的com c#就可以访问。

#3


这样啊,这个以前还真没注意到