我怎样才能支持XML序列化封装类中无参数的构造函数?函数、类中、参数、序列化

2023-09-04 12:11:02 作者:筷樂媄壹天

我目前使用的的XMLSerializer 连载一类我自己的列表。一类的属性是没有参数的构造函数密封类的实例,因此XML序列拒绝该类序列化。我怎样才能解决这个?我需要的属性被序列化。

I'm currently using an XMLSerializer to serialize a list of a class of my own. One of the class's properties is an instance of a sealed class that does not have a parameterless constructor, so the XML Serializer refuses to serialize the class. How can I get around this? I need that property to be serialized.

是否有某种方式为我指定的类应该被序列化?

Is there some way for me to specify how that class should be serialized?

我们想留在XML;在那里,我可以用,不会有这个问题的另一个XML序列化?

We'd like to stay with XML; is there another XML serializer that I could use that would not have this problem?

此外,我道歉,如果这是一种欺骗,但我不知道该怎么寻找。

Again, I apologize if this is a dupe, but I had no idea what to search.

为了澄清,我没有进入密封类的源。

To clarify, I don't have access to the source of the sealed class.

推荐答案

这是不可能直接做的; 的XmlSerializer 无法应付没有参数的构造函数的类。

It's not possible to do directly; XmlSerializer can't cope with classes that don't have a parameterless constructor.

我通常做的是包裹参类另一类是与XML兼容。包装类有一个参数的构造函数和一组读写性能;它有一个 FromXml 方法调用真正的类的构造函数。

What I normally do is wrap the parameterless class in another class that's compatible with XML. The wrapper class has a parameterless constructor and a set of read-write properties; it has a FromXml method that calls the real class's constructor.

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

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