如何使用无参数构造函数XML序列化密封类?

Nic*_*win 5 .net c# serialization xml-serialization sealed

我目前正在使用XMLSerializer序列化我自己的类列表.类的一个属性是一个没有无参数构造函数的密封类的实例,因此XML Serializer拒绝序列化该类.我怎么能绕过这个?我需要将该属性序列化.

有什么方法可以指定该类应该如何序列化?

我们想继续使用XML; 是否有另一个我可以使用的XML序列化器,不会有这个问题?

我再次道歉,如果这是一个骗局,但我不知道该搜索什么.

[编辑]为了澄清,我无法访问密封类的来源.

Tim*_*son 12

不可能直接做; XmlSerializer无法处理没有无参数构造函数的类.

我通常做的是将无参数类包装在另一个与XML兼容的类中.包装类有一个无参数构造函数和一组读写属性; 它有一个FromXml调用真实类的构造函数的方法.

[XmlIgnore]
public SomeClass SomeProperty { get; set; }

[XmlElement("SomeProperty")]
public XmlSomeClass XmlSomeProperty
{
    get { return XmlSomeClass.ToXml(SomeProperty); }
    set { SomeProperty = value.FromXml(); }
}
Run Code Online (Sandbox Code Playgroud)