我在 Silverlight 中有一个自定义的 UserControl,它很简单,由 TextBlocks 和 TextBoxes 组成。我有一个类实体的层次结构如下:
- Person 是一个抽象超类,包含属性 Name 和 Age
- Man 是 Person 的子对象,添加了 FacialFeature 属性
- Woman 是 Person 添加属性 LastMenstruated 和 HasHymen 的孩子
所以:
- 一个人包含属性名称和年龄
- 一个 Man 包含属性 Name、Age 和 FacialFeature
- 一个女人包含属性名称、年龄、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 并为新类型添加案例等。