我正在将一个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中的类中声明事件?提前致谢。
答案 0 :(得分:0)
据我所见,除了事件和事件之外没有办法做到这一点只能从一个类中抛出,而不是从接口抛出。