繁体   English   中英

在Mono 3.0.1中未调用OnSerializing方法

[英]OnSerializing method not called in Mono 3.0.1

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

使用Mono framework 3.0.1在Mac上使用MonoDevelop。 我正在尝试将对象序列化为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事件。

有没有其他人遇到这个或你能帮助解释为什么代码失败?

谢谢

这是Mono中的一个错误,我刚刚为您解决了这个问题:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM