- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在使用 XMLSerializer
来序列化我自己的类的列表。该类的属性之一是没有无参数构造函数的密封类的实例,因此 XML Serializer 拒绝序列化该类。我该如何解决这个问题?我需要将该属性序列化。
有什么方法可以让我指定该类应该如何序列化吗?
我们希望继续使用 XML;有没有我可以使用的另一个 XML 序列化程序,不会有这个问题?
再次,如果这是一个骗局,我深表歉意,但我不知道要搜索什么。
[编辑] 澄清一下,我无权访问密封类的源代码。
最佳答案
直接做是不可能的; XmlSerializer
无法处理没有无参数构造函数的类。
我通常做的是将无参数类包装在另一个与 XML 兼容的类中。包装类有一个无参数的构造函数和一组读写属性;它有一个调用真实类构造函数的 FromXml
方法。
[XmlIgnore]
public SomeClass SomeProperty { get; set; }
[XmlElement("SomeProperty")]
public XmlSomeClass XmlSomeProperty
{
get { return XmlSomeClass.ToXml(SomeProperty); }
set { SomeProperty = value.FromXml(); }
}
关于c# - 如何使用 XML 序列化没有无参数构造函数的密封类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559744/
当数据类扩展包含非抽象 open val 属性的密封类时,生成的子数据类包含与父类的私有(private)字段重复的私有(private)字段。 sealed class Foo(open val f
当封装一个.jar 文件(整个.jar,而不是特定的包)时,实际上封装了哪些包?它只是包含.class 文件的包,还是还包含父包和子包? 举个例子,假设我有一个包含单个 .class 文件 com.c
我可以很容易地为这样的密封案例类族一般派生一个编解码器: import io.circe._ import io.circe.generic.auto._ sealed trait Base case
我有一个类层次结构: class C1 { virtual object M1(); } class C2: C1 { override sealed object M1(); } class C3:
有什么区别: type MovieType = {| +blob?: string, +name: string, +url?: string |}; 和 type MovieType =
想象一个这样的 secret : apiVersion: v1 kind: Secret metadata: name: {{ include "test-cicd.fullname" . }}
因此,我的一位开发人员使用这样的函数为 Magento 电子商务网站制作自定义导航: getUrl() ?>">__('about') ?> 唯一的问题是它的输出如下: about 据我了解,如果同时
我是一名优秀的程序员,十分优秀!