【发布时间】:2013-09-26 13:45:58
【问题描述】:
我有一个基本抽象类“BaseEngine”和一个子类“Engine : BaseEngine”。
引擎有一个名为“实例”的引擎类型的公共属性:
public Engine Instance
{ get; set; }
我想从 BaseEngine 获取这个实例。我已经试过了:
public abstract BaseEngine<T> where T : class
{
public T Instance { get; set; }
}
和
public Engine : BaseEngine<Engine>
但它会创建递归。
你有什么建议吗? 谢谢!
更新
我有很多从 BaseEngine 类派生的类。每个子类都有实际上做同样事情的方法。我试图将这些方法移到基类中,以便在发生更改时更改更少的代码。我将尝试找到另一种方法来做到这一点,因为我所要求的无法完成。感谢您的回复。
【问题讨论】:
-
您需要多解释一下您要做什么。您所描述的内容不能按原样完成,用其他术语想象它更容易看出,如果您有
Shape和Square您试图从Shape函数内部引用Square。如果您告诉我们您要完成的工作we can help you solve that problem instead. -
你想做什么?这一切都很奇怪。
-
父类不应该知道实现类型的细节,这很难闻。
-
为什么你的基类需要知道派生类?基类应该对派生类一无所知,因为它通常表示代码异味。
-
“它创建递归”是什么意思?
标签: c# class inheritance