【问题标题】:DefaultParameterValue attribute with XmlSerializer?带有 XmlSerializer 的 DefaultParameterValue 属性?
【发布时间】:2011-06-27 00:36:10
【问题描述】:

我们正在编写一个 .NET 3.5 应用程序,它使用各种对象的 Xml 序列化。

我们基本上是从一个对象创建一个 xml 文档,我希望能够使用这个属性 (DefaultParameterValue),它是 .NET 4.0 用来实现可选参数的。

我希望 Xml 生成的文档包含具有此属性的参数的默认值。

有可能吗?

【问题讨论】:

标签: c# xml-serialization


【解决方案1】:

XmlSerializer 在(公共)字段/属性级别运行。这样做时,它看到的其中一件事是类似的[DefaultValue(...)]。它根本不考虑方法,除了一些辅助模式,如ShouldSerialize*()。因此,与参数完全没有交叉,无需查看[DefaultParameterValue(...)]。

【讨论】:

    【解决方案2】:

    这不是属性的工作方式。 xml de/serializers 识别的那些是有据可查的,该列表不可扩展。添加更多需要更改代码。您无法更改的代码,它被锁定在框架程序集中。

    通过在类构造函数中分配您想要的默认值来实现等效。

    【讨论】:

    • XmlSerializer 是否可以像某些 .NET 内置类一样以任何方式自定义?
    • 它有几个虚拟方法。您会发现它们对于实现您想要的功能毫无用处。 System.Xml 不是 .NET 的最大成就,它已被大量取代。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2011-03-16
    相关资源
    最近更新 更多