0

次のタイプが定義された XSD があります。

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

XSD.exe を介して作成された C# オブジェクトを、XmlSerializerこれらの attributeValue タイプのいずれかを介して書きたいと思います。typeデフォルトと等しい場合でも、シリアライザーに属性を強制的に書き出すことは可能ですか?

XSD を変更することはできず、XSD.exe を介して生成された C# POCO を変更することは避けたいことに注意してください。これは将来変更されるため、メンテナンスのオーバーヘッドを回避したいからです。

4

1 に答える 1

1

これは仕様によるものです。MSからの返信です推奨される回避策は、属性フィールドのSystem.ComponentModel.DefaultValueAttributeをコメント アウト/削除することです。KB 記事には、「Microsoft は、.NET Framework の次のメジャー バージョン リリースでこの動作を変更する予定です」と書かれていますが、そうではなかったようです。

于 2012-04-26T11:15:00.140 に答える