私はSilverlightにカスタムUserControlを持っていますが、これは単純にTextBlocksとTextBoxesで構成されています。次のようなクラスエンティティの階層があります。
- Personは、NameとAgeのプロパティを含む抽象的なスーパークラスです。
- Manは、FacialFeatureプロパティを追加するPersonの子です。
- 女性は、LastMenstruatedプロパティとHasHymenプロパティを追加するPersonの子です。
それで:
- Personには、NameとAgeのプロパティが含まれています
- 男性には、Name、Age、FacialFeatureのプロパティが含まれています
- 女性には、Name、Age、LastMenstruated、HasHymenのプロパティが含まれています
私が欲しいのは、UserControlがこれらのプロパティの値を次のように単純に表示することです。
PersonがManタイプの場合:
Name : Mark
Age : 23
FacialFeature : Fully Shaved
または、PersonがWomanタイプの場合:
Name : Jane
Age : 8
LastMenstruated : Never
HasHymen : Yes
これは私の質問のための単純化された例であることを覚えておいてください。
私が欲しいのは、UserControlが異なる情報を表示し、実行時のPersonのタイプに応じて異なる情報を表示することです。
GetType(Person)をオンにするswitchステートメントを使用してコードビハインドでコントロールを作成することを考えましたが、これについて私が気に入らないのは、ロジックがUserControlにあることです。オブジェクトが独自の表示をカプセル化するソリューションが欲しいので、新しいタイプのPersonを追加する場合、UserControlに戻って、新しいタイプのケースなどを追加する必要はありません。