gpt4 book ai didi

c# - Mono 3.0.1 中未调用 OnSerializing 方法

转载 作者:行者123 更新时间:2023-11-30 17:09:00 24 4
gpt4 key购买 nike

在 Windows 上的 Visual Studio 中测试了相同的代码以确保。

在 Mac 上使用 MonoDevelop 和 Mono 框架 3.0.1。我正在尝试将对象序列化为 JSON,并且需要通过将 System.Runtime.Serialization.OnSerializingAttribute 分配给方法来填充 OnSerializing 事件中的一些属性。但是,mono 框架似乎没有调用该方法。其他序列化事件都不起作用。简化代码例如:

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":"This is a what?","set_on_serialize":"A brick!"

在 Mac 上的 MonoDevelop 中,我得到: {“out_value”:“这是什么?”,“set_on_serialize”:“”

出于某种原因,Mono 没有调用 OnSerializing 事件。

有没有其他人遇到过这个问题,或者您能帮忙解释一下代码失败的原因吗?

谢谢

最佳答案

这是 Mono 中的一个错误,我只是 fixed这是给你的:-)

关于c# - Mono 3.0.1 中未调用 OnSerializing 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com