0

XmlSerializer を利用して、XML との間で変換を行います。クラスの例を次に示します。

[XmlRootAttribute("myClass")]
public class MyClass {
    private string someField;

    [XmlElement("someField")]
    public string SomeField {
        get {
            return someField;
        }

        set {
            someField = value;
        }
    }
}

XML は次のようになります。

<myClass>
    <someField>Some Value</someField>
</myClass>

このクラスに属性を追加できるようにしたいです。たとえば、要素に変更追跡を追加する必要がある場合があります。「IdRef」などの属性が myClass 要素に追加されます。

<myClass t:IdRef="someGuid" xmlns:t="uri:some:uri">
    <someField>SomeValue</someField>
</myClass>

IdRef 属性をメインの POCO クラスから除外したいと考えています。また、上記のようなクラスがたくさんあるので、拡張属性を追加して、それぞれにサブクラスを作成する必要がないように願っています。IXmlSerializer インターフェイスを使用してカスタム実装を作成する可能性はありますか?

更新 以下に説明する簡単な解決策を使用します。この実装を「考えすぎ」て、必要のないところに複雑さを加えようとしていたと思います。

4

1 に答える 1

1

私はどう思いますか?それらを「POCO」クラスに固定する必要があると思いますが、「追加のシリアル化マークアッププロパティ」などのラベルが付いた領域に非表示にし、他の属性を使用して、クラスのコンシューマーからほとんど見えないようにすることができます。

于 2009-02-02T22:21:44.943 に答える