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;

对于对象实例已经存在的情况,请检查以下问题:将属性反序列化为预先存在的对象

于 2013-03-15T14:01:16.057 回答
1

作为一个快速选项,您可以使用 AutoMapper。使用 XmlSerializer 反序列化到新实例,然后使用 AutoMapper 从新创建的实例映射到所需的实例。

于 2013-03-15T14:07:19.943 回答