我需要一些架构帮助,我认为我一直在做的事情不一定是最好的方法。
注意事项:
- 这不是一个 android 特定的问题。
- 然而,Android 确实要求我需要跨“屏幕”序列化对象。
考虑以下:
我目前正在开发一款需要在不同屏幕之间传递角色类的 android 游戏。为了做到这一点,我需要序列化对象。考虑到将需要不同类型的字符,我想创建一个为每个字符继承的类。在我有静态字符的地方,我想从 Character 类继承并在构造函数中设置默认值,例如“名称”和“描述”。
当前实施:
我正在传递序列化的子类对象。(例如:具有 Character 基础的 UserCharacter )理想的情况是我能够反序列化对象,因为它是基类,但在我看来这不起作用。我目前唯一可行的解决方案是在尝试进行序列化时执行以下操作:
new XmlSerializer(typeof (Character, new [] { typeof(CharacterUser)}));
这允许我传入多个子类型。然而,这从长远来看是不可行的,因为它只是意味着在我的应用程序中重复代码,以及每次创建新的字符子类时,我都需要在需要反序列化的任何时候添加它。我宁愿编写代码并在我离开它的地方工作以做自己的事情。我相信你能理解这一点。
我尝试过的另一件事是在字符对象上使用 IXmlSerializable 并独立处理阅读和写作。我认为这需要实现一个列表才能正常工作?目前我的 ReadXml 永远不会被调用。(好主意,但到目前为止它对我不起作用)
有人有什么想法我可以尝试吗?
我认为这是一个非常开放的问题,如果我需要稍微不同的范围,请告诉我。