gpt4 book ai didi

c# - 有没有办法从 COM Interop 调用 C# 委托(delegate)?

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:37 25 4
gpt4 key购买 nike

我正在将 C# 库移植到 COM,但我很难尝试翻译一些委托(delegate)。 C# 库使用一些回调(使用委托(delegate))。通常我会将其转换为 COM 客户端使用的事件,但该库仅提供公共(public)接口(interface),因此我无法使用 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);
};

我不能这样做,因为事件是在接口(interface)上声明的,而 ComSourceInterface 只能在类中声明。

有什么提示可以解决这个问题吗?

编辑:另一种说法。有没有一种方法可以在接口(interface)中而不是在 COM 的类中声明事件?

提前致谢。

最佳答案

据我所知,除了使用事件之外,没有其他方法可以做到这一点,而事件只能从类中抛出,而不能从接口(interface)中抛出。

关于c# - 有没有办法从 COM Interop 调用 C# 委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com