2012-11-13 7 views
3

Testé le même code dans Visual Studio sous Windows pour être sûr. Utilisation de MonoDevelop sous Mac avec Mono Framework 3.0.1. J'essaie de sérialiser des objets à JSON et devez remplir certaines propriétés dans l'événement OnSerializing en affectant System.Runtime.Serialization.OnSerializingAttribute à une méthode. Cependant, le framework mono ne semble pas faire appel à la méthode. Aucun des autres événements de sérialisation ne fonctionne non plus. Simplifié le code par exemple:Méthode OnSerializing non appelée dans Mono 3.0.1

using System; 
using System.IO; 
using System.Runtime.Serialization.Json; 
using System.Runtime.Serialization; 

namespace MyApp 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      Cereal specialK = new Cereal(); 

      DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Cereal)); 

      specialK.TheValue="This is a what?"; 

      MemoryStream stm = new MemoryStream(); 
      ser.WriteObject(stm, specialK); 
      string json = System.Text.Encoding.UTF8.GetString(stm.ToArray()); 

      Console.WriteLine(json); 
      Console.ReadLine(); 

     } 
    } 

    [DataContract] 
    class Cereal 
    { 
     [DataMember(Name="set_on_serialize")] 
     private string _setOnSerialize = string.Empty; 

     public Cereal() { } 

     [DataMember(Name = "out_value")] 
     public string TheValue 
     { 
      get; 
      set; 
     } 

     [OnSerializing] 
     void OnSerializing(StreamingContext content) 
     { 
      this._setOnSerialize = "A brick!"; 
     } 
    } 
} 

Dans Visual Studio, la sortie est: { "out_value": "C'est quoi?", "Set_on_serialize": "Une brique"}

Dans MonoDevelop sur Mac, je reçois: { "out_value": "C'est quoi?", "set_on_serialize": ""}

Mono ne demande pas l'événement OnSerializing pour une raison quelconque.

Est-ce que quelqu'un d'autre a rencontré cela ou pouvez-vous aider à expliquer pourquoi le code échoue?

Merci

Répondre

2

Ce fut un bug dans Mono, je viens fixed pour vous :-)

Questions connexes