【发布时间】:2009-07-01 08:57:25
【问题描述】:
我有一个应用程序支持某些设备的多种类型和版本。它可以连接到这些设备并检索各种信息。
根据设备的类型,我(除其他外)有一个可以包含各种属性的类。有些属性是所有设备共有的,有些是特定设备独有的。
这个数据被序列化为xml。
什么是实现类的首选方法,该类将支持这些设备的未来版本中的未来属性,并向后兼容以前的应用程序版本?
我可以想到几种方法,但我觉得没有一个很好:
- 使用名称-值对的集合:
- 优点:良好的向后兼容性(我的应用程序的 xml 和以前版本)和可扩展性,
-
缺点:没有类型安全,没有智能感知,需要实现自定义 xml 序列化(以处理不同的
value对象)
- 为每个新设备创建派生属性类:
- 优点:类型安全
-
缺点:必须使用
XmlInclude或自定义序列化来反序列化派生类,与以前的 xml 架构没有向后兼容性(尽管通过实现自定义序列化我可以跳过未知属性?) , 需要强制转换才能访问派生类中的属性。
- 另一种方法?
顺便说一句,我正在使用 C#。
【问题讨论】:
-
是否需要 XML?你的两个缺点都说必须处理 XML。感觉好像不想用 XML……
-
是的,这就是客户知道流行语的要求之一。 :)
-
我会选择“为每个新设备创建派生属性类”...
标签: c# oop inheritance xml-serialization