创建可扩展属性类(OOP)

Gro*_*roo 5 c# oop inheritance xml-serialization

我有一个应用程序,它支持某些设备的多种类型和版本.它可以连接到这些设备并检索各种信息.

根据设备的类型,我有(除其他外)一个可以包含各种属性的类.某些属性对所有设备都是通用的,有些属性对于特定设备是唯一的.

此数据序列化为xml.

实现一个类的首选方法是什么,它将支持这些设备的未来版本中的未来属性,以及向后兼容以前的应用程序版本?

我可以想到几种方法,但我发现它们都不是很好:

  • 使用一组名称 - 值对:
    • 专业人士:良好的向后兼容性(我的应用程序的xml和以前版本)和可扩展性,
    • 缺点:没有类型安全,没有intellisense,需要实现自定义xml序列化(处理不同的value对象)
  • 为每个新设备创建派生属性类:
    • 专业人士:类型安全
    • 缺点:必须使用XmlInclude或自定义序列化来反序列化派生类,不与以前的xml架构向后兼容(虽然通过实现自定义序列化我可以跳过未知属性?),需要强制转换来访问派生类中的属性.
  • 另一种方法呢?

顺便说一句,我正在使用C#.

abh*_*ash 2

类似于PropertyBag的东西怎么样?