如何将JavaScript对象的列表传递给Windows运行时组件C#?
实际上,正确的方法是将集合序列化为json字符串并将此字符串传递给Windows运行时组件。并反序列化运行时组件端的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();
}
}
我不知道为什么,这是行不通的。
根据您的代码片段,您创建了一个对象数组并尝试将其作为IEnumarable<DtoClass>
传递给运行时组件。你传递了一个数组,我认为你应该能够以数组的形式接收它。我不认为对象可以自动分析到DtoClass
。如果您使用可以识别的字符串或int数组。例如,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细节。