【问题标题】:Which data types can be used when communicating with an App Service in UWP在 UWP 中与应用服务通信时可以使用哪些数据类型
【发布时间】:2017-10-11 20:18:28
【问题描述】:

我创建了一个带有应用服务的 UWP 应用,它们之间的通信是使用 AppServiceConnection 中的值集完成的。但是,我无法找出传输的值集中支持哪些类型的数据。

这是一些测试代码

class MyClass { public int Prop1 { get; set; } }
var data = new ValueSet();
var stringlist = new List<string>() {"a string"};

// This does not work
// data.Add("data", new MyClass() { Prop1 = 1});

// This does not work
// data.Add("data", stringlist);

// This works fine!!
data.Add("data", stringlist.ToArray());

当使用不受支持的数据类型时,我收到以下错误,因此很明显它不受支持。但是,我找不到与此相关的任何文档,也无法确切知道应该支持什么。

Unhandled Exception: System.Exception: Data of this type is not supported.
(Exception from HRESULT: 0x8007065E)

第二个问题;是否可以创建一个类以便我可以在值集中使用它?

【问题讨论】:

  • 您可以包括该文档说“此类防止将不可序列化的类型放入地图中。”但是你找不到“可序列化”类型是什么。

标签: c# uwp


【解决方案1】:

您可以包含所有可以序列化的类型。因此,任何具有默认构造函数的数据类型都接受0 参数并且其中的字段也是serializable 或者不可序列化的那些是DataAnotated,因为[JsonIgnore] 是可以接受的。

话虽如此,将序列化数据发送到值是安全的选择。

为此,您可以使用 NewtonSoft nugget for Json serialization 来自 nugget 包存储,当您拥有需要发送的数据(如果它不是字符串)时,您可以序列化对象,然后发送它并当你收到它时,你会得到一个序列化的对象,你可以反序列化它来获取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多