【发布时间】:2012-09-13 21:09:30
【问题描述】:
我在 Silverlight 中有一个自定义的 UserControl,它很简单,由 TextBlocks 和 TextBoxes 组成。我有一个类实体的层次结构如下:
- Person 是一个抽象超类,包含属性 Name 和 Age
- Man 是 Person 添加属性 FacialFeature 的子代
- Woman 是 Person 添加属性 LastMenstruated 和 HasHymen 的子代
所以:
- Person 包含属性 Name 和 Age
- a Man 包含属性 Name、Age 和 FacialFeature
- a Woman 包含属性 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 并为新类型添加案例等。
【问题讨论】: