如何将对象列表从 JavaScript 传递到 Windows 运行时组件 C#?
其实正确的做法是把集合序列化成一个json字符串,然后把这个字符串传递给Windows Runtime Component。并在运行时组件端反序列化json字符串进行数据处理。之后将序列化的 json 字符串返回给 JavaScript uwp 应用程序。 JavaScript 中如何序列化请参考this class,C# 中如何序列化请参考this namespcase。所以你在 JavaScript 端的代码可能如下:
var Test = [];
for (var i = 1; i < 6; i++) {
Test.push({ category_id: i });
}
var Conncetion = RuntimeComponent1.MyClass();
var Testserialation = JSON.stringify(Test);
var resultnew = Conncetion.newFunction(Testserialation);
var Testreturn = JSON.parse(resultnew);
在windows运行时组件中:
public sealed class MyClass
{
public string NewFunction(string jsonstring)
{
JsonArray entity= JsonArray.Parse(jsonstring);
return entity.ToString();
}
}
我不确定为什么这不起作用。
根据您的代码 sn-p,您创建了一个对象数组并尝试将其作为 IEnumarable<DtoClass> 传递给运行时组件。你传递了一个数组,在我看来你应该能够将它作为一个数组接收。而且我认为对象不能自动解析为DtoClass。如果使用可以识别的字符串或整数数组。例如,一个 int 数组:
var newTest = [1, 2, 3, 4];
var result2 = Conncetion.changeArray(newTest);
组件中的代码:
public int[] ChangeArray([ReadOnlyArray()] int[] input)
{
int[] output =(int[])input.Clone();
// Manipulate the copy.
// ...
return output;
}
有关将数组传递给 Windows 运行时组件的更多详细信息,请参考 this article。