c# – 如何使用构造函数将XML反序列化到对象中,该构造函数需要XDocument?

前端之家收集整理的这篇文章主要介绍了c# – 如何使用构造函数将XML反序列化到对象中,该构造函数需要XDocument?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个班:
public class MyClass
{
   public MyClass(){}
}

我希望能够使用XMLSeralizer直接在构造函数中对XDocument进行反序列化:

public class MyClass
{
   private XmlSerializer _s = new XmlSerializer(typeof(MyClass));

   public MyClass(){}
   public MyClass(XDocument xd)
   {
      this = (MyClass)_s.Deserialize(xd.CreateReader());
   }
}

除非我不允许在构造函数中分配给“this”.

这可能吗?

解决方法

不,不可能.序列化器在反序列化时创建对象.您已经创建了一个对象.而是提供一个从XDocument构造的静态方法.
public static MyClass FromXml (XDocument xd)
{
   XmlSerializer s = new XmlSerializer(typeof(MyClass));
   return (MyClass)s.Deserialize(xd.CreateReader());
}

猜你在找的C#相关文章