次の(非常に単純化された)構造のプロジェクトに取り組んでいます。
BaseClass
SubClassA : BaseClass
SubClassB : BaseClass
を使用するUI(多くのロジックを含む)がありSubClassA
、それを別のコンポーネントに保存します。このコンポーネントBaseClass
はパラメータとして受け取りますが、すぐに引数を にキャストしますSubClassB
。UI が を渡しているため、これは失敗しますSubClassA
。
UI:
MyComponent.Save(subClassA)
Component:
Save(BaseClass baseClass)
{
SubClassB subClassB = (SubClassB)baseClass;
...
現在の実装では、UI で SubClassB のインスタンスを作成し、それを渡しますが、次のような多くのコードが発生します。
SubClassB.Property1 = SubClassA.Property1a
2 つのサブクラスが実装する共通のインターフェイスを作成することを考えています。大変な作業になりますが、ゆっくりと、現在の非常に深いヒエラルキーをフラット化できると思います。他のサブタイプを使用するために UI またはコンポーネントのいずれかを作り直すことは、構造が異なるのと同じくらいの作業になります (ただし、多くのフィールドがマップされます)。インターフェイスアプローチは正しい方法ですか? 私に欠けているものがあるかもしれないと感じています。