J'ai besoin de désérialiser un peu de JavaScript objet représenté en JSON à une classe C#. Étant donné les caractéristiques intéressantes automatique de propriétés, je préfère les avoir dans ces classes plutôt que de simplement avoir des champs. Malheureusement, l' .NET moteur de sérialisation (au moins, par défaut) ignore totalement automatique de propriétés sur la désérialisation et se soucie uniquement de la sauvegarde de champ, qui n'est évidemment pas présent dans l'objet JavaScript.
Étant donné qu'il n'y a pas de méthode standard pour le nom de champs de sauvegarde et pour être honnête, je n'ai même pas envie de s'embêter avec la "nous allons créer un objet JavaScript qui ressemble comme il a C# champs de sauvegarde" comme il sonne un peu sale, la seule façon que je pouvais sérialiser JavaScript champs de C# auto-propriétés si je pouvais forcer la sérialisation moteur en quelque sorte ignorer la sauvegarde et l'utilisation de la propriété directement. Malheureusement, je ne peux pas comprendre comment c'est fait ou si cela peut être fait à tout. Toutes les idées seront les bienvenues.
EDIT: Voici un exemple:
Javascript:
function Cat()
{
this.Name = "Whiskers";
this.Breed = "Tabby";
}
var cat = new Cat();
C'est alors sérialisé "{Nom: "Moustaches"}".
La classe C#:
[Serializable()]
public class Cat
{
public string Name { get; set; }
public string Breed { get; set; }
}
Et la désérialisation code, qui échoue:
new DataContractJsonSerializer(typeof(Cat)).ReadObject(inputStream);
Et il est évident à partir de l'exception qu'il échoue, car il est à la recherche pour le champ de stockage.
EDIT2: Voici l'exception, si ça peut aider (pas d'exceptions internes):
Système.Moment de l'exécution.La sérialisation.SerializationException
"Le contrat de données type de Test.Chat" ne peut pas être désérialisé parce que le les données requises des membres '
<Name>k__BackingField, <Breed>k__BackingField
"n'étaient pas trouvé."