【问题标题】:How to force writing of an XML attribute when it is equal to the default in the XSD (.Net C#)当 XML 属性等于 XSD(.Net C#)中的默认值时,如何强制写入 XML 属性
【发布时间】:2012-04-26 19:15:00
【问题描述】:

我有一个定义了以下类型的 XSD:

<xs:complexType name="AttributeValue">
    <xs:simpleContent>
        <xs:extension base="xs:string">
            <xs:attribute name="type"
                type="ns:MyType" 
                default="Value"/>

我想通过XmlSerializer 使用这些attributeValue 类型之一编写通过XSD.exe 创建的C# 对象。是否可以强制序列化程序写出type 属性,即使它等于默认值?

请注意,我无法修改 XSD,我想避免修改通过 XSD.exe 生成的 C# POCO,因为这将在未来发生变化,我想避免维护开销。

【问题讨论】:

    标签: c# xml serialization xml-attribute


    【解决方案1】:

    这是设计使然。 Here 是 MS 的回复。建议的解决方法是注释掉/删除属性字段的 System.ComponentModel.DefaultValueAttribute。知识库文章称“Microsoft 计划在 .NET Framework 的下一个主要版本发布中更改此行为。”但看起来他们没有。

    【讨论】:

    • 我喜欢 M$ 的支持参考。以防万一有人有忍者答案,我暂时不打算将其标记为正确。但我觉得我运气不好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    相关资源
    最近更新 更多