我有一个具有事件签名的 ac#.NET 类,它使用这样的传出接口向 COM 公开:
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IHehServerEvents
{
string EmptyEvent(object sender, CustomEventArgs args);
}
在 PluginAPI.h>> 我有
class PluginAPI: public IHehServerEvents,public FB::JSAPIAuto//implemented the COM outgoing interface
{
//基于tlh文件声明的EmptyEvent方法
HRESULT __stdcall EmptyEvent(VARIANT sender,IUnknown * args, BSTR * pRetVal);
FB_JSAPI_EVENT(CSharpEvent, 2, (FB::variant,IUnknown *));
}
HRESULT ClassCpluss::EmptyEvent(BSTR message, BSTR * pRetVal)
{....}
我在 Firebreath 声明中的事件助手是
FB_JSAPI_EVENT(CSharpEvent, 2, (VARIANT,struct _EventArgs *));
我也看到了这个链接。所以 boost::variant 支持对吗?那么如何将 VARIANT 转换为 boost::variant?上述声明中预期的任何变化?如何使用 VARIANT 或 struct 在 c# 中处理上述事件?任何示例都会有所帮助..