我已经创建了带有应用程序服务的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]
是可以接受的。
话虽如此,将序列化数据发送到值是一个安全的选择。
为此,您可以将nccet包存储中的NewtonSoft
nugget用于Json serialization
,并在拥有需要发送的数据(如果不是字符串)时对对象进行序列化,然后将其发送并在收到时它会得到一个序列化的对象,可以对它进行反序列化以获取数据。