Alex Rivera | Logout

How do I deserialize XML into an object using a constructor that takes an XDocument?

Asked 2011-10-26T10:41:23.370
13

I have a class:

public class MyClass
{
   public MyClass(){}
}

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.

Is this possible?

Edit
Report

1 Answer

7

It's more standard to use a static load method.

public class MyClass
{
    public static MyClass Load(XDocument xDoc)
    {
        XmlSerializer _s = new XmlSerializer(typeof(MyClass));
        return (MyClass)_s.Deserialize(xDoc.CreateReader());
    }
}
answered 2011-10-26T10:47:18.463

Your Answer