mic*_*ael 2 wcf soap boolean default-value datamember
我有以下内容:
[DataContract]
public class Foo
{
[DataMember(EmitDefaultValue = true)
public bool Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
2个问题:
这里真的发生了什么因为我的bool实际上不能为空,所以如果我发出默认值那么什么呢?
我如何做到这一点,如果有人传递没有Bar部分的消息,那么我的服务器默认情况下将其设置为true而不是false?
基本上,我的bar成员不需要通过soap消息传输,如果不是,我希望它默认为true,而不是false.我不确定正确的组合,以使我的邮件大小有效(删除任何不必要的),然后将值默认为我想要的,如果它不在消息中?
EmitDefaultValue 默认情况下为true.
您可以尝试使用 DefaultValue属性,System.ComponentModel但我不确定它是否有效.
我刚刚测试了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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4464 次 |
| 最近记录: |