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