C# 如何使用布尔类型获取DataMemberAttribute

C# 如何使用布尔类型获取DataMemberAttribute,c#,wcf-client,wcf-rest,C#,Wcf Client,Wcf Rest,我有一个简单的测试应用程序,可以从rest接口提取xml文档。数据元素有两个字符串字段和两个布尔字段。我创建了一个简单的实体类,并在其上放置了一个DataContractAttribute,然后向每个数据成员添加了DataMemberAttributes。然后我使用HttpResponseMessage.Content.ReadAsDataContract()解析响应。所有的字符串类型都很好,但是我所有的布尔类型都是false(它们不是真的false)。xml元素类似于: <is-enab

我有一个简单的测试应用程序,可以从rest接口提取xml文档。数据元素有两个字符串字段和两个布尔字段。我创建了一个简单的实体类,并在其上放置了一个DataContractAttribute,然后向每个数据成员添加了DataMemberAttributes。然后我使用HttpResponseMessage.Content.ReadAsDataContract()解析响应。所有的字符串类型都很好,但是我所有的布尔类型都是false(它们不是真的false)。xml元素类似于:

<is-enabled type="boolean">true</is-enabled>
[DataMember(Name="is-enabled")]
public bool isEnabled
{
    get
    {
        return this.isEnabledField;
    }
    set
    {
        this.isEnabledField = value;
    }
    }

我怎样才能让布尔值正确地通过呢?

看起来应该可以,但是。。。我要尝试的第一件事是从数据成员名称中删除破折号“-”。(反)序列化程序可能在内部阻塞了破折号,没有映射到正确的成员,因此给您默认的bool值false


如果您觉得有必要在以后使复合变量名更具可读性,请尝试使用下划线。

信不信由你,DataContractSerializer对反序列化XML文档中元素的顺序很敏感。我打赌您需要设置DataMemberAttribute的Order属性,以匹配其父元素的其他子元素中“已启用”的实际位置。

我无法更改它,这是我正在使用的服务中的成员的名称。