我有一个班:
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()); }