2011-12-23 3 views
2

C#でXmlSerializerを使用して特定のフィールドのシリアル化を制御できますか? Foxの例stringの代わりに何か他のものとしてシリアライズされる "Type"(文字列)という名前のプロパティ。 ありがとうございます。XmlSerializerを使用して特定のフィールドのシリアル化を制御できますか?

+0

[Serializable]属性に基づいてシリアライズするものを制御することができます。たとえば、クラス全体をシリアライズするか、特定のプロパティのみを選択するかを選択できます – MethodMan

答えて

5

/XmlAttributeアノテーション(属性または完全なXML要素など)のアノテーションを使用して、いくつかを制御できます。ただし、タイプを直接変更することはできません。任意のタイプの複雑なシリアライゼーションスキームをサポートする必要がある場合、XmlSerializerは多くの制限のために適切な選択ではありません。 DataContractSerializer(WCFのドキュメントの"Using Data Contracts"を参照)を使用する方が良いでしょう。

あなただけの(カスタムXML型または名前空間を使用して例えば)結果のシリアル化されたデータのXML型を変更したい場合は、XmlType属性であることを行うことができますが、それはあなたが宣言したタイプのために動作しますプリミティブなCLR型ではありません(たとえば、文字列を整数型または別のより複雑な型にすることはできません)。

0

私はあなたがあなただけの属性を使用して入力して制御することはできませんIXmlSerializable interface

をしたいと思います。クラスのシリアライズ/シリアライズを行うための独自のコードをロールバックする必要があります。そのインターフェースはあなたがそれを可能にします。

1

XMLIgnore属性でシリアル化する内容を制御できます。この属性で修飾されたプロパティはシリアル化されません。

XMLTypeを使用して、XMLシリアライザによって型がシリアル化される方法を管理することもできますが、とにかくCLR型に直接影響することはありません。

シリアル化を使用してCLRタイプを変更することはできません。

関連する問題