在我最近提出的问题(Web服务结果中的大型复杂对象)后,我一直在思考如何确保所有未来的子类都可以序列化为XML。
显然,我可以实现IXmlSerializable接口,然后将一个读取器/写入器扔给它,但是我想避免这样做,因为那就意味着每当我想这样做时都需要实例化一个读取器/写入器,而99.99%的时间我将使用字符串,所以我可能会自己编写一个。
然而,要将其序列化为XML,我只需使用Xml???属性(例如XmlRoot、XmlElement等)装饰类及其成员,然后将其传递给XmlSerializer和StringWriter以获取字符串。这很好。我打算将返回字符串的方法放入通用的实用方法中,这样我就不必担心类型等问题。
我担心的是:如果我没有对类进行所需的属性装饰,那么在运行时才会抛出错误。
有没有办法强制执行属性装饰?FxCop可以做到吗?(我还没有使用FxCop)
更新:
抱歉让你们久等了,要做的事情太多了!
绝对喜欢使用反射在测试用例中来实现,而不是诉诸于FxCop(喜欢将所有内容放在一起)...Fredrik Kalseth的答案非常好,感谢包含代码,因为如果要自己找出如何做这件事可能需要花费一些时间!
+1给其他建议类似的人:)