One*_*key 11 .net c# xml xml-serialization linq-to-xml
我有一节课:
public class MyClass
{
public MyClass(){}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用XMLSeralizer直接在构造函数中反序列化XDocument:
public class MyClass
{
private XmlSerializer _s = new XmlSerializer(typeof(MyClass));
public MyClass(){}
public MyClass(XDocument xd)
{
this = (MyClass)_s.Deserialize(xd.CreateReader());
}
}
Run Code Online (Sandbox Code Playgroud)
除了我不允许在构造函数中指定"this".
这可能吗?
Tim*_*ers 29
不,这是不可能的.序列化程序在反序列化时创建对象.你已经创建了一个对象.相反,提供一个静态方法来从XDocument构造.
public static MyClass FromXml (XDocument xd)
{
XmlSerializer s = new XmlSerializer(typeof(MyClass));
return (MyClass)s.Deserialize(xd.CreateReader());
}
Run Code Online (Sandbox Code Playgroud)
使用静态加载方法更为标准.
public class MyClass
{
public static MyClass Load(XDocument xDoc)
{
XmlSerializer _s = new XmlSerializer(typeof(MyClass));
return (MyClass)_s.Deserialize(xDoc.CreateReader());
}
}
Run Code Online (Sandbox Code Playgroud)
最好使用某种工厂,例如:
public static MyClass Create(XDocument xd)
{
XmlSerializer _s = new XmlSerializer(typeof(MyClass));
return (MyClass)_s.Deserialize(xd.CreateReader());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13858 次 |
| 最近记录: |