gpt4 book ai didi

值类型上的 WCF DataMember EmitDefaultValue? (但设置我自己的默认值)

转载 作者:行者123 更新时间:2023-12-02 07:47:04 26 4
gpt4 key购买 nike

我有以下内容:

[DataContract]
public class Foo
{
[DataMember(EmitDefaultValue = true)
public bool Bar { get; set; }
}

2 个问题:

  1. 这里真正发生了什么,因为我的 bool 不能真的为 null,所以如果我发出默认值,那会怎样?

  2. 如果有人在没有 Bar 部分的情况下传递消息,那么我的服务器如何将其默认设置为 true 而不是 false?


基本上,我的 bar 成员不需要通过 soap 消息传输,如果不需要,我希望它默认为 true,而不是 false。我不确定要使我的消息大小有效(删除任何不必要的东西)的正确组合,然后如果它不在消息中则将该值默认为我想要的值?

最佳答案

EmitDefaultValue 默认为真。

您可以尝试使用 System.ComponentModel 中的 DefaultValue 属性,但我不确定它是否有效。

我刚刚测试了 DefaultValue 属性,但它不起作用。这意味着您无法更改默认值 - 将始终使用数据类型的默认值。

如果你想将你的 Bar 设置为 true 使用:

[DataContract]
public class Foo
{
[DataMember(EmitDefaultValue = false)
public bool? Bar { get; set; }

[OnDeserialized]
private void SetValuesOnDeserialized(StreamingContext context)
{
if (!Bar.HasValue)
{
Bar = true;
}
}
}

关于值类型上的 WCF DataMember EmitDefaultValue? (但设置我自己的默认值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253486/

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