我有一个半复杂的继承结构,我在覆盖基类上的构造函数时遇到了困难。以下代码可以显示错误:
public abstract class MyBaseObject
{
public MyBaseObject(MyBaseCollection<MyBaseObject> parent)
{
this.Parent = parent;
}
public MyBaseCollection<MyBaseObject> Parent { get; set; }
}
public abstract class MyBaseCollection<T>
where T : MyBaseObject
{ }
public class MyRealObject : MyBaseObject
{
public MyRealObject(MyRealCollection parent)
: base(parent)
{ }
public new MyRealCollection Parent { get { return (MyRealCollection)base.Parent; } }
}
public class MyRealCollection : MyBaseCollection<MyRealObject>
{ }
所以,具体来说,我不能覆盖 MyBaseObject 类中的构造函数。尝试传入 MyRealCollection 代替 MyBaseCollection 是不可接受的。如果我摆脱泛型论点,它会起作用;MyRealCollection 代替 MyBaseCollection 被接受。但是我真的需要泛型参数来使我的集合类按照我需要的方式工作。