2012-09-11 3 views
0

J'utilise une ancienne version de Sharp arch sur un projet et j'essaie de sérialiser en utilisant JSON.NET. JavascriptSerializer fonctionne, mais je préfère JSON.NET pour les préférences.pourquoi json.net ne montre que la classe s # arp EntityWithTypedId?

Voici le problème. Pour une raison quelconque, lorsque je tente de sérialisation d'un simple objet pointu, je reçois le texte suivant:

// my sharp object 
[Serializable] 
public class Contact : Entity 
{ 
    public virtual string EmailAddress { get; set; } 
} 

... 

// in sharp, this is what happens to Entity 
[Serializable] 
public abstract class Entity : EntityWithTypedId<int> { 
    protected Entity(); 
} 

// and then into EntityWithTypedId 
[Serializable] 
public abstract class EntityWithTypedId<IdT> : ValidatableObject, IEntityWithTypedId<IdT> { 
    protected EntityWithTypedId(); 

    [JsonProperty] 
    [XmlIgnore] 
    public virtual IdT Id { get; protected set; } 

    public override bool Equals(object obj); 
    public override int GetHashCode(); 
    protected override IEnumerable<PropertyInfo> GetTypeSpecificSignatureProperties(); 
    public virtual bool IsTransient(); 
} 

Quand je lance la conversion JSON suivant, je ne reçoivent que { "Id" : 0 } en conséquence.

Contact test = new Contact { 
    EmailAddress = "[email protected]" 
}; 
string result = JsonConvert.SerializeObject(test); 

Des idées sur la façon de renvoyer tout le contenu de l'objet?

+0

Juste [testé] (https://github.com/seif/Sharp-Architecture/commit/c1757af64c19465e930b2c8f92e2b8ecbcce3a1d) exactement ce que vous avez donné avec la dernière version de l'architecture forte et l'objet a été correctement sérialisé, quelle version de SharpArchitecture/Newtonsoft.Json utilisez-vous? –

+0

Salut Attar, actuellement nous devons coller avec SharpArch.dll v1.6.0.0. Et la dernière version de Newtonsoft.Json. – sonjz

Répondre

1

La classe BaseObject dans Architecture S # arp avait une série de membres définie sur OptIn, qui a été supprimée dans 2.0.

Vos options sont:

  • Mise à jour Sharp architecture 2.0
  • Utilisez un sérialiseur JSON différent, ServiceStack.Text est grande.
  • recompilation de Sharp architecture 1.6 avec la propriété retirée
  • Ajouter JsonProperty attribut à des propriétés spécifiques que vous voulez sérialisé
+0

Merci pour l'aide, j'ai fini par revenir à JSON.NET 3.5. Je vais certainement jeter un oeil à ServiceStack.Text comme recommandé. Pour une raison quelconque, la recompilation m'a aussi échappé :) – sonjz

Questions connexes