我如何反序列化XML转换成使用一个构造函数一个XDocument对象? [英] How do I deserialize XML into an object using a constructor that takes an XDocument?

查看:281
本文介绍了我如何反序列化XML转换成使用一个构造函数一个XDocument对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类:

public class MyClass
{
   public MyClass(){}
}

我希望能够在构造函数中这样使用XMLSeralizer反序列化一个XDocument直接:

I would like to be able to use an XMLSeralizer to Deserialize an XDocument directly in the constructor thus:

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

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

除了我不能在构造函数中分配到本。

Except I am not allowed to assign to "this" within the constructor.

这可能吗?

推荐答案

没有,这是不可能的。串行器创建对象时,他们反序列化。你已经创建的对象。相反,提供了一个静态方法从一个XDocument建设。

No, it's not possible. Serializers create objects when they deserialize. You've already created an object. Instead, provide a static method to construct from an XDocument.

public static MyClass FromXml (XDocument xd)
{
   XmlSerializer s = new XmlSerializer(typeof(MyClass));
   return (MyClass)s.Deserialize(xd.CreateReader());
}

这篇关于我如何反序列化XML转换成使用一个构造函数一个XDocument对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆