【发布时间】:2011-06-27 00:36:10
【问题描述】:
我们正在编写一个 .NET 3.5 应用程序,它使用各种对象的 Xml 序列化。
我们基本上是从一个对象创建一个 xml 文档,我希望能够使用这个属性 (DefaultParameterValue),它是 .NET 4.0 用来实现可选参数的。
我希望 Xml 生成的文档包含具有此属性的参数的默认值。
有可能吗?
【问题讨论】:
标签: c# xml-serialization
我们正在编写一个 .NET 3.5 应用程序,它使用各种对象的 Xml 序列化。
我们基本上是从一个对象创建一个 xml 文档,我希望能够使用这个属性 (DefaultParameterValue),它是 .NET 4.0 用来实现可选参数的。
我希望 Xml 生成的文档包含具有此属性的参数的默认值。
有可能吗?
【问题讨论】:
标签: c# xml-serialization
XmlSerializer 在(公共)字段/属性级别运行。这样做时,它看到的其中一件事是类似的[DefaultValue(...)]。它根本不考虑方法,除了一些辅助模式,如ShouldSerialize*()。因此,与参数完全没有交叉,无需查看[DefaultParameterValue(...)]。
【讨论】:
这不是属性的工作方式。 xml de/serializers 识别的那些是有据可查的,该列表不可扩展。添加更多需要更改代码。您无法更改的代码,它被锁定在框架程序集中。
通过在类构造函数中分配您想要的默认值来实现等效。
【讨论】: