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 インターフェイスを使用してカスタム実装を作成する可能性はありますか?
更新 以下に説明する簡単な解決策を使用します。この実装を「考えすぎ」て、必要のないところに複雑さを加えようとしていたと思います。