【发布时间】:2008-10-09 10:18:15
【问题描述】:
我有一个这样的类层次结构:
+-- VirtualNode
|
INode --+ +-- SiteNode
| |
+-- AbstractNode --+
|
+-- SiteSubNode
还有一个基于INode 的相应NodeCollection 类。为了显示NodeCollection,我需要知道每个成员的最终类型。所以我需要这样的功能
foreach (INode n in myNodeCollection)
{
switch(n.GetType())
{
case(typeof(SiteNode)):
// Display n as SiteNode
}
}
现在,这实际上不是一种面向对象的方式。 您认为是否有任何模式或推荐的方法来做同样的事情?
编辑
我已经想过在 INode 接口中添加一个Display 或Render 方法。这具有将视图与模型耦合的副作用,我真的很想避免这种情况。
【问题讨论】:
标签: c# design-patterns