我知道我可以使用Linq将字段从XML映射到预先存在的对象中的字段。 .NET Framework(或其他库)中是否有任何函数可以减少手动操作。
我想写(并让HydrateFromXml表现得像AutoMapper一样):
var myObject = new MyObject(/*ctor args*/);
myObject = myObject.HydrateFromXml(string xml);
修改
我可以在这里使用装饰器模式或简单的包装器对象吗?直接反序列化为一个由抽象包装的类型,允许我需要的细粒度构造控制?
答案 0 :(得分:5)
您可以使用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 pre-existing object
答案 1 :(得分:1)
作为一个快速选项,您可以使用AutoMapper。使用XmlSerializer反序列化为新实例,然后使用AutoMapper从新创建的实例映射到所需的实例。