我正在开发一个具有以下(非常简化)结构的项目:
BaseClass
SubClassA : BaseClass
SubClassB : BaseClass
有一个 UI(有很多逻辑)使用SubClassA
,然后将其保存到另一个组件,该组件BaseClass
作为参数但立即将参数转换为SubClassB
. 这会失败,因为 UI 正在传入SubClassA
。
用户界面:
MyComponent.Save(subClassA)
Component:
Save(BaseClass baseClass)
{
SubClassB subClassB = (SubClassB)baseClass;
...
当前的实现在 UI 中创建了一个 SubClassB 的实例并将其传递出去 - 但它会导致大量代码,例如
SubClassB.Property1 = SubClassA.Property1a
我正在考虑创建一个由 2 个子类实现的通用接口。这将是很多工作,但慢慢地我认为我可以扁平化当前非常深的层次结构。重新设计 UI 或组件以使用其他子类型将与结构不同(尽管许多字段映射)一样多的工作。接口方法是正确的方法吗?我觉得我可能缺少一些东西。