【问题标题】:Serialize nested interface序列化嵌套接口
【发布时间】:2010-05-31 15:19:39
【问题描述】:

如何序列化这个类?

public class MyClass    {
    IInterface MyProperty { get; set;}
}

【问题讨论】:

  • 嗨,阿伦,如果问题或答案已更新,通常会在问题或答案中添加注释,例如编辑:废话,废话,废话,因为废话废话。谢谢。

标签: c# .net xml-serialization


【解决方案1】:

您需要向 MyProperty 添加一个 setter,因为 Xml 序列化规则要求序列化必须能够往返,即它必须能够获取序列化的属性,然后设置反序列化的属性。

【讨论】:

  • 抱歉误会,我需要一种方法来序列化作为接口的属性,当然要实例化
  • 对不起,这里有点字面意思。如果它是一个接口,您需要遵循 Thomas 的回答,但您仍然需要在您的属性上设置一个 setter。
【解决方案2】:

正如 chibacity 所说,您需要为属性添加一个 setter。您还需要在属性中添加XmlInclude 属性以指定可能的实现类型,否则XmlSerializer 在反序列化时将不知道要实例化什么类型

【讨论】:

    【解决方案3】:

    XmlSerializer 无法序列化接口。

    如果您提前知道要处理的具体类型,那么您可以使用XmlInclude 方法。如果没有,那么已经有一些关于如何处理的讨论:

    【讨论】:

      【解决方案4】:

      像往常一样使实现 IInterface Serializable 的类能够正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-31
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多