在Windows上的Visual Studio中测试相同的代码以确保。
在Mac上使用MonoDevelop与Mono framework 3.0.1。我正在尝试将对象序列化为JSON,并且需要通过将System.Runtime.Serialization.OnSerializingAttribute分配给方法来填充OnSerializing事件中的一些属性。但是,单声道框架似乎没有调用该方法。其他序列化事件都不起作用。简化代码例如:
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!";
}
}
}
在Visual Studio中,输出为: {“out_value”:“这是什么?”,“set_on_serialize”:“一块砖!”}
在Mac上的MonoDevelop中,我得到: {“out_value”:“这是什么?”,“set_on_serialize”:“”}
由于某种原因,Mono没有调用OnSerializing事件。
是否有其他人遇到此问题,或者您是否可以帮助解释代码失败的原因?
由于