C# - 使用XML水合现有对象

Ben*_*Ben 7 c# xml

我知道我可以使用Linq将字段从XML映射到预先存在的对象中的字段..NET Framework(或其他库)中是否有任何函数可以减少手动操作.

我想写(并让HydrateFromXml表现得像AutoMapper一样):

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

myObject = myObject.HydrateFromXml(string xml);
Run Code Online (Sandbox Code Playgroud)

编辑:

我可以在这里使用装饰器模式或简单的包装器对象吗?直接反序列化为一个由抽象包装的类型,允许我需要的细粒度构造控制?

Mar*_*zek 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;
Run Code Online (Sandbox Code Playgroud)

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

  • 这似乎不能回答我的问题,因为`result`不会预先存在反序列化步骤.我想补充一个预先存在的对象实例. (2认同)