【发布时间】:2013-07-11 14:36:57
【问题描述】:
我将一个序列化对象作为 json(或者将来可能是 xml)存储在数据库中。稍后,该对象将被拉取并反序列化。基类是 HighChart,但也有几个派生类型,例如 HighChart.ColumnBarChart。图表的类型存储在 JSON 中。问题是我无法弄清楚我将如何动态选择要反序列化的类。
我的解决方案需要提供一种自动考虑未来派生类型的方法(我将扩展图表类型的数量,并且不想为每种图表类型编写新的东西)。
我知道我可以将类型存储到单独的 DB 字段中 - 但我必须再次在我的 Deserialize 方法中为每种类型使用 switch 语句。我也可以解析 json 字符串并发现图表类型,但同样 - 我必须为每种可能的类型使用 switch 语句。
感谢您的意见!
【问题讨论】:
-
我认为您不必将其反序列化为具体类型。您不能将其反序列化为基本类型,然后将其用作您需要的具体类型(强制转换)吗?
-
@BobHorn 我可以轻松地从派生类型转换为基类型,但我不能轻松地从基类型转换为派生类型(派生类型通常比基类型具有更多功能)也在此主题是这样的:stackoverflow.com/a/124347/1387186
-
转换为基本类型时,不会丢失信息。它还在那里。您只是使用它作为基本类型。如果您强制转换为派生类型,您将可以访问派生属性。
标签: c# .net serialization deserialization