gpt4 book ai didi

javascript - Com 类型编码(marshal)处理 - C# Windows 运行时组件 - Cordova 项目 Javascript 调用 - Cordova Windows 插件

转载 作者:行者123 更新时间:2023-11-28 05:56:08 25 4
gpt4 key购买 nike

我正在为 Cordova 项目开发一个插件。我有一个项目来构建我的 Windows 运行时组件。我正在尝试将字典传递给我的 javascript 代码。如果我使用 bool 或 int,则效果很好,但如果我使用更复杂的对象类型,则会收到错误。这是我的 c# 插件中的代码。

    public static IAsyncOperation<IDictionary<string, int>> doTestFunction()
{
return TestFunction().AsAsyncOperation();
}

private static async Task<IDictionary<string, int>> TestFunction()
{
IDictionary<string, int> testDictionary = new Dictionary<string, int>();
testDictionary.Add("value1", 1);
testDictionary.Add("value2", 1);
return testDictionary;
}

这是我的 JavaScript 调用。

BLEComm.doTestFunction(
function (res) {
if (res) {
console.log("it didn't completely fail");
} else {
alertOpen("it kind of failed");
}
},
function (err) {
console.log("failure" + err);
}
);

我的错误记录到我的控制台:

failureWinRTError:找不到与此错误代码关联的文本。

ComTypeMarshalling_MissingInteropDataindex.js (225,17)

同样,如果我只返回 int 或 bool,我不会遇到任何问题。我已经搜索了又搜索,但无法弄清楚出了什么问题。

最佳答案

因此,从 MS 示例而不是外包示例开始会有所帮助。下面的作品。

using System.Runtime.InteropServices.WindowsRuntime;

这是代码。

    public static IAsyncOperation<IDictionary<string, int>> TestFunction2()
{
return AsyncInfo.Run<IDictionary<string, int>>((token) =>
Task.Run<IDictionary<string, int>>(() =>
{
return AddDictionary();
}, token)
);
}

//private static async Task<IDictionary<string, int>> AddDictionary()
private static IDictionary<string, int> AddDictionary()
{
IDictionary<string, int> testDictionary = new Dictionary<string, int>();
testDictionary.Add("value1", 23);
testDictionary.Add("value2", 1986);
return testDictionary;
}

关于javascript - Com 类型编码(marshal)处理 - C# Windows 运行时组件 - Cordova 项目 Javascript 调用 - Cordova Windows 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657757/

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