【发布时间】:2011-02-16 14:25:42
【问题描述】:
假设我有 animal 类和 cat 和 dog 类扩展它。我想做一些类似的事情:
foreach (class a in {cat, dog})
if (a.isValid(parameters))
doStuff();
isValid 是来自 animal 的静态方法,它只检查给定参数是否定义了给定类型的对象
doStuff 表示我正在做一些我认为不值得复制的事情
@你在说哪些对象?希望我的其他编辑可以澄清这一点
我不是从一个对象开始并试图确定它的类型。我从参数开始,并尝试确定要实例化的动物类型。 所以像 BlueRaja 建议的那样,但不需要构造函数。
我唯一的选择是每个类的 switch 语句,这是我想避免的。
谢谢,
J-B
【问题讨论】:
-
你能更清楚你的对象来自哪里吗?
-
问题不是很清楚你想要完成什么。什么是有效?为什么 doStuff 不带任何参数?
-
您的问题令人困惑。目前尚不清楚您是在迭代 TYPES cat 和 dog 还是这些类型的 INSTANCES。 IsValid 是什么意思完全不清楚,因为“静态”和“虚拟”是对立的;没有“静态虚拟”方法。您能否在问题中提供更多详细信息?
-
@Jean:不同子类上的各个静态方法彼此之间没有有用的关系。如果这确实是您想要做的,那么它会完全改变问题,并且如果没有反射或其他黑客是不可能做到的。
-
@BlueRaja:继承静态方法。静态构造函数不被继承,但静态方法被继承。
标签: c# oop class inheritance list