Si je tente de sérialiser un objet de la classe ClassToSerialize suivante avec System.Runtime.Serialization.Json.DataContractJsonSerializerSystem.Runtime.Serialization.Json.DataContractJsonSerializer.WriteObject ignore l'attribut NonSerialized lors de la sérialisation
[DataContract,Serializable]
public class ClassToSerialize
{
[NonSerialized] private bool _mf;
public bool IsMf
{
get { return _mf};
set{ _mf = value;}
}
[DataMember]
public char PrimaryExc { get; set; }
}
public class TestClass
{
ClassToSerialize obj = new ClassToSerialize{PrimaryExchange = 'a', NoResults = true};
var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(ClassToSerialize);
var ms = new MemoryStream();
serializer.WriteObject(ms, obj);
return Encoding.UTF8.GetString(ms.ToArray());
}
Le retour string contient toujours la propriété IsMf et sa valeur. L'attribut NOnSerialized est ignoré. Quelqu'un peut-il s'il vous plaît suggérer quel attribut à utiliser lors de l'utilisation DataContractJsonSerializer afin de ne pas sérialisation des propriétés
J'ai mis à jour la réponse de Darin parce qu'elle est plus précise et plus complète et qu'elle est downvoted celle-ci parce qu'elle est trompeuse. Seuls les membres marqués avec [DataMember] sont sérialisés, les autres ne le sont pas. Pas besoin de [NonSerialized] qui est comme vous avez remarqué est ignoré. –