8

Linq を使用して、フィールドを XML から既存のオブジェクトのフィールドにマップできることを知っています。.NET Framework (または他のライブラリ) に、これをあまり手動で行わないようにする機能はありますか。

私は書きたいと思います (そして、HydrateFromXml を AutoMapper のように少し動作させます):

var myObject = new MyObject(/*ctor args*/);

myObject = myObject.HydrateFromXml(string xml);

編集:

ここでデコレータ パターンまたは単純なラッパー オブジェクトを使用できますか? 必要な細粒度の構築制御を可能にする抽象化によってラップされた型に直接逆シリアル化しますか?

4

2 に答える 2

4

あなたはXmlSerializerそれを行うために使用することができます:

var serializer = new XmlSerializer(typeof(MyObject));

object result;
using (TextReader reader = new StringReader(xml))
{
    result= serializer.Deserialize(reader);
}

var myObject = result as MyObject;

オブジェクト インスタンスが既に存在する状況については、この質問を確認してください: Deserializing properties into a preexisting object

于 2013-03-15T14:01:16.057 に答える
1

簡単なオプションとして、AutoMapper を使用できます。XmlSerializer を使用して新しいインスタンスに逆シリアル化し、次に AutoMapper を使用して新しく作成されたインスタンスから必要なインスタンスにマップします。

于 2013-03-15T14:07:19.943 に答える