2017-10-11 5 views
3

J'ai créé une application UWP avec un service d'application et la communication entre ceux-ci s'effectue à l'aide de jeux de valeurs dans un AppServiceConnection. Je ne peux cependant pas savoir quels types de données sont pris en charge dans les ensembles de valeurs transférés.Quels types de données peuvent être utilisés lors de la communication avec un service d'application dans UWP

Voici un code de test

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()); 

Lorsque vous utilisez un type de données non pris en charge, je reçois l'erreur ci-dessous, il est donc assez clair qu'il ne soit pas pris en charge. Je ne peux cependant trouver aucune documentation à ce sujet et je ne peux pas savoir exactement ce qui est supposé être supporté.

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

Une deuxième question; est-il possible de créer une classe pour pouvoir l'utiliser dans les ensembles de valeurs?

+0

Vous pouvez inclure que doc dit "Cette classe empêche les types non sérialisables d'être mis dans la carte." mais vous ne trouverez nulle part ce que sont les types "sérialisables". –

Répondre

0

Vous pouvez inclure tous les types pouvant être sérialisés. Donc tout type de données qui a un constructeur par défaut qui prend 0 arguments et les champs à l'intérieur sont également serializable ou ceux qui ne sont pas sérialisables sont DataAnotated comme [JsonIgnore] sont acceptables. Cela étant dit, il est conseillé d'envoyer des données sérialisées aux valeurs.

Pour ce faire, vous pouvez utiliser NewtonSoft pépite pour du magasin de package de pépite et quand vous avez les données que vous devez envoyer (si ce n'est pas une chaîne) vous sérialiser l'objet puis envoyez-le et quand vous recevez vous obtiendrez un objet sérialisé que vous pouvez désérialiser pour obtenir les données.