2012-02-02 10 views
2

XmlSerializerを使用しているときにXMLノードにマップするためにC#プロパティの属性を使用する代わりに誰かが知っていますか?Xmlシリアル化

私の問題は、いくつかのプロパティ(ID、Title、Bodyなど)を持つArticleというオブジェクトがあり、属性を直接追加したくないということです。部分クラスを作成し、プロパティを再定義してそこに属性を追加しましたが、すぐに部分クラスでプロパティを重複させることはできません。

だから誰かが(例えば、n-hibernateと同様のやり方で)代わりにプロパティをマップできる方法を知っているのだろうかと思っていました。

ご協力いただきありがとうございます。

答えて

4

XmlAttributeOverridesを渡して実行時に動作を変更できるようにするconstructor of the XmlSerializerクラスがあります。ドキュメントから

引用:

オーバーライドパラメータは、フィールドと プロパティはXMLで符号化される方法を制御するために使用することができます。これらの設定は、オブジェクトに既に存在するすべての属性 を上書きします。これは、ソース のコードを変更できない場合、または同じクラスの に複数のエンコーディングが必要な場合に便利です。

0

IXmlSerializableを直接実装できます。もう少しコードが必要ですが、属性を必要とせずに完全な制御が可能です。