J'ai une structure de classe qui a peu de propriétés de chaîne, et je veux ajouter une autre propriété qui renvoie la valeur de chaîne Json
le même objet dynamiquement.Comment éviter d'appeler une propriété pour la deuxième fois, tout en utilisant le même objet avec la clause "this"
Mon problème est, quand je l'utilise this
tout en créant le résultat Json
, il appelle à nouveau l'objet récursive et accidents avec StackOverflowException
à la fin.
J'ai essayé de changer le champ this
avec New Introducer() { Id = this.Id }
mais cela a provoqué la même erreur.
Bien que je sois capable de le résoudre en identifiant un paramètre booléen IsSerializing
et en contournant manuellement le champ pour la deuxième fois, je cherche une solution plus décente.
Existe-t-il une commande ou un attribut pour empêcher le compilateur d'appeler la propriété Serialized
pour la deuxième fois? Ou est-ce que j'appelle la propriété d'une mauvaise façon en premier lieu?
Voici ma classe:
public class Introducer
{
public Introducer()
{
this.Id = 0;
this.NameSurname = string.Empty;
this.EmailAddress = string.Empty;
this.UserCreated = new User();
}
public int Id { get; set; }
private string _NameSurname;
public string NameSurname { get { return _NameSurname; } set { _NameSurname = value.Trim(); } }
private string _EmailAddress;
public string EmailAddress { get { return _EmailAddress; } set { _EmailAddress = value.Trim(); } }
public DateTime DateCreated { get; set; }
public User UserCreated { get; set; }
public string Serialized
{
get
{
return JsonConvert.SerializeObject(this, Formatting.Indented);
}
}
}
Peut-être, ne déclarez pas la propriété sérialisée comme publique, juste interne. – Graffito
[Comment exclure une propriété de Json Serialization] (http://stackoverflow.com/q/10169648/669576) –
Vous pouvez ajouter un attribut '[JsonIgnore]' à cette propriété. Ou en faire une méthode. – stuartd