如何使用布尔类型获取 DataMemberAttribute

Posted

技术标签:

【中文标题】如何使用布尔类型获取 DataMemberAttribute【英文标题】:How do I get a DataMemberAttribute use a boolean type 【发布时间】:2010-12-08 04:02:15 【问题描述】:

我有一个简单的测试应用程序,它从一个休息界面中提取一个 xml 文档。数据元素有几个字符串字段和几个布尔字段。我创建了一个简单的实体类并在其上放置了一个 DataContractAttribute,然后将 DataMemberAttributes 添加到每个数据成员。然后我使用 HttpResponseMessage.Content.ReadAsDataContract() 来解析响应。所有的字符串类型都很好,但我所有的布尔类型都是假的(而且它们并不是真的假的)。 xml 元素类似于:

<is-enabled type="boolean">true</is-enabled>

然后在我的类型类中我有类似的东西:

[DataMember(Name="is-enabled")]
public bool isEnabled

    get
    
        return this.isEnabledField;
    
    set
    
        this.isEnabledField = value;
    
    

如何让布尔值正确通过?

【问题讨论】:

【参考方案1】:

它似乎应该可以工作,但是...我要尝试的第一件事是从数据成员名称中删除破折号“-”。 (反)序列化程序可能会在内部阻塞破折号并且没有映射到正确的成员,因此给您默认的布尔值 false;

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

【讨论】:

我无法更改,这是我正在使用的服务中的成员名称。【参考方案2】:

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

【讨论】:

以上是关于如何使用布尔类型获取 DataMemberAttribute的主要内容,如果未能解决你的问题,请参考以下文章

如何在TypeScript中使用类型保护

如何在 C 中使用布尔数据类型?

如何在SAS中使用布尔数据类型?

布尔类型

为 pandas.read_csv 指定正确的 dtypes 以获取日期时间和布尔值

需要从源表中获取布尔类型列作为 varchar 并在 Amazon redshift 的目标表中存储为 varchar