繁体   English   中英

有没有办法从COM Interop调用C#委托?

[英]Is there a way to call a C# delegate from COM Interop?

我正在将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中的类中声明事件?

提前致谢。

据我所知,除了使用Event之外,没有其他方法可以做,并且只能从Class而不是从Interface抛出Event。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM