我是Windows Runtime Component的新手,并且一直试图弄清楚如何实现以下目标。
我想在Javascript中扩展的C ++接口。
namespace MySDK {
public interface class LoggerPlugin
{
public:
virtual void Log (Platform::String^ Tag, Platform::String^ Messsage);
};
}
C ++
namespace MySDK {
public ref class Logger sealed : public Platform::Object
{
public:
static Logger^ GetInstance ();
void SetPlugin (LoggerPlugin^ Plugin);
};
}
我尝试过,看起来很傻,但我不知道如何实现它。
var plugin = {
log: function(tag, message) {
console.log(tag + ':' + message);
}
};
MySdk.Logger.getInstance().setPlugin(plugin);
我得到的错误是
JavaScript runtime error: Type mismatch
我找不到任何关于如何实现这一目标的文档或示例,如果有人能够提供一个如何完成此操作的示例,我将不胜感激。
答案 0 :(得分:0)
JavaScript无法实现WinRT接口。如果您想拥有插件的JavaScript实现,那么您将需要构建一个引发事件(JavaScript可以订阅)的具体类型,而不是定义虚拟方法(C ++或C#可以实现)。