我正在把一个C库移植到COM,我很难翻译一些代表。C库使用一些回调(使用委托)。通常我会将其转换为COM客户机使用的事件,但库只提供公共接口,因此我不能使用ComSourceInterfaces。
作为我希望能够做到的一个例子:
[ComVisible(false)]
public delegate void ReceivedCOMMessageHandler (MessageCOM^ message);
[ComSourceInterfaces("ReceivedMessageEventInterface")]
public interface class IChannelCOM
{
bool PushMessage (MessageCOM^ message);
bool RegisterEventHandler (ReceivedCOMMessageHandler^ handler, FilterCOM^ filter);
bool UnRegisterEventHandler (ReceivedCOMMessageHandler^ handler);
property String^ Name;
event ReceivedCOMMessageHandler^ ReceivedMessage;
};
[InterfaceType(ComInterfaceType::InterfaceIsIDispatch)]
[Guid("D4D2A638-303E-41d4-8925-07A2A60B17F3")]
public interface class ReceivedMessageEventInterface
{
[DispId(1)] void ReceivedMessage(MessageCOM^ message);
};
我不能这样做,因为事件是在接口上声明的,而ComSourceInterface只能在类中声明。
我能做些什么来解决这个问题吗?
编辑:也可以这么说。有没有一种方法可以在接口中而不是在COM中的类中声明事件?
事先谢谢。