【发布时间】:2013-12-18 11:25:41
【问题描述】:
if (this.Page is ArticlePage|| this.Page is ArticleListPage)
{
//Do something fantastic
}
上面的代码可以工作,但考虑到我想将this.Page 与许多不同的类进行比较,我想将这些类存储在一个列表中,然后在列表上执行.Contains()。
我将如何实现这一目标?我会以某种方式使用GetType()吗?我可以存储Page 对象的列表,然后以某种方式比较这些类型吗?
注意:您可以假设我比较 this.Page 的所有类都扩展了 Page。
【问题讨论】:
-
你不应该写这种类型的代码。当您发现自己在做这样的事情时,请找到使用多态性的正确方法。多态行为将允许您在不选择类型的情况下选择适当的行为。
-
一开始有什么更好的方法?谢谢老兄。
-
您是否会考虑至少创建一个空接口(例如
IDoSomethingFantastic),让页面类也实现该接口,那么您的检查将只是if (this.Page is IDoSomethingFantastic)?如果您基本上可以将“神奇”的内容定义/移动到这些页面/界面中,则可以获得额外的奖励。
标签: c# list class inheritance types