c# - 与 UWP 中的应用服务通信时可以使用哪些数据类型

标签 c# uwp

我创建了一个带有应用服务的 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)

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

最佳答案

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

也就是说,将序列化数据发送到值是一个安全的选择。

为此,您可以使用 NewtonSoft nugget 从 nugget 包存储中进行 Json 序列化,并且当您有需要发送的数据时(如果不是string) 你序列化对象然后发送它,当你收到它时你会得到一个序列化对象,你可以反序列化它来获取数据。

关于c# - 与 UWP 中的应用服务通信时可以使用哪些数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681428/

相关文章:

c# - 复制单个成员比整个结构更快?

c# - 将 OData 转换为 sql 字符串

javascript - Windows UWP 的Confirm()方法

c# - 禁用标题栏 "X"- 关闭按钮

c# - 如何从 C# 中的列表中删除项目?

c# - 32feet蓝牙客户端连接失败

xaml - 如何在 UWP 中重用资源中的图标?在 WPF 中,我会使用 x :Shared=false

c# - 里面的按钮是 listView 在 UWP 的 View 中不显示

c# - 将 Texture2D 转换为 OpenCV Mat?

windows - Windows 10 UWP(桌面桥)应用程序可以重新启动自己的可执行文件吗?