【发布时间】:2011-06-03 13:38:07
【问题描述】:
我有两个派生类,Dog 和 Bird,它们派生自基类 Animal。
狗的属性是犬舍,鸟的属性是巢。
我想要一个方法(在单独的静态类中),它可以接收 Animal 类的实例,检查类型,然后调用其他将 Kennel 或 Nest 作为参数传递给它们的方法,例如:
if (MyAnimal.GetType = Dog)
{MyKennelMethod(MyAnimal.Kennel)}
else if (MyAnimal.GetType = Bird)
{MyNestMethod(MyAnimal.Nest)}
我猜这行不通。当您只有基类时,有没有办法访问派生类的属性?如果可能的话,我宁愿不要用单独的抽象方法来混淆 Dog 和 Bird 类,因为我更喜欢一个单独的静态类来处理所有方法。我还希望它易于扩展,这样我就可以拥有数百种来自 Animal 的新“动物”。
对于代码语法上的任何错误,我很抱歉,目前我手头没有编辑器。
【问题讨论】:
-
基于类型层次结构中的类型的流控制通常是一个非常糟糕的主意。
-
您是否考虑过使用访问者模式?
-
顺便说一句,该语言称为“C#”,而不是“C Sharp”。
-
@John:等等,它不叫 C 磅!?
-
@John @Brian:我还以为是 C-HashMark!
标签: c# class inheritance abstract