gpt4 book ai didi

c# - Mono 不支持 System.Runtime.Serialization.DataMemberAttribute EmitDefaultValue 设置

转载 作者:行者123 更新时间:2023-11-30 21:02:29 24 4
gpt4 key购买 nike

为了确定,在 Windows 上的 Visual Studio 中尝试了代码。

Mono 框架似乎不支持DataMemberAttributeEmitDefaultValue 参数。使用以下代码:

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();
specialK.TheValue="This is a what?";

var ser = new DataContractJsonSerializer(typeof(Cereal));
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;

[DataMember(Name = "default_export", EmitDefaultValue = false)]
private string _default_null;

public Cereal() { }

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

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

Mono 中的输出结果为:

{"default_export":null,"out_value":"This is a what?","set_on_serialize":""}

default_export 属性被导出为 null 但不应输出,因为它是 string 类型的默认值。

Windows 上 VS 的正确输出是:

{"out_value":"This is a what?","set_on_serialize":"A brick!"}

这是 Mono 中的错误还是我遗漏了什么?

最佳答案

显然此功能尚未在单声道中实现。查看FIXME comment in the mono source code (第 197 行)。

关于c# - Mono 不支持 System.Runtime.Serialization.DataMemberAttribute EmitDefaultValue 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483138/

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