我正在为 Petrel 编写一个 Ocean 插件,需要保留一些自定义域对象,而且一切似乎都指向使用结构化存档数据源。我创建了一个通用类来保存许多标准域对象(机器人、名称、颜色、图像、评论、历史等),以避免为我创建的每个域对象重写它。Ocean 开发指南只有简单的类没有继承的例子,但考虑到一切都有一个版本号,我预见到当基类版本与继承的版本不同时,一个潜在的问题-class-1 与继承的不同- class-2,然后我在基类中更新一些东西。
是否可以将结构化档案与公共基类一起使用?版本控制是否有任何特殊注意事项,或者我需要注意的其他事项?
ETA:一个简单的类图,显示了我尝试过的关系和一些东西
public abstract class ClassA
|
-----------------------------------
| |
public class ClassB : ClassA public classC : ClassA
public class ClassD
{
private List<ClassA> _myClassAObjects;
}
所有类都被标记Archivable
,并且在ClassD
,_myClassAObjects
被标记Archived
。一切都可以保存,但是当我加载时,我得到一个InvalidCastException
,因为它试图将List<ClassB>
转换为List<ClassA>
. 铸造应该工作,因为ClassB
继承自ClassA
,不应该吗?