我试图了解哪种层次结构最适合继承,如下所述。到目前为止,我有以下几点:
public interface IManager<T> where T : ISomeObject
{
bool Add(T o);
bool Remove(T o);
bool Update(T o);
}
但后来我想让每个派生类都有一个参数化的构造函数。所以我去了:
public abstract class Manager<T> : IManager<T> where T : ISomeObject
{
protected readonly INeededObject obj;
protected Manager(INeededObject o)
{
obj = o;
}
}
关于如何解决这个设计问题的任何想法?提前谢谢。
答案 0 :(得分:4)
你快到了。您也可以在基类中使用泛型类型参数。
public abstract class Manager<T> : IManager<T> where T : ISomeObject
{
protected readonly T obj;
protected Manager(T o)
{
obj = o;
}
}
您也可以使用参数化类型,例如
protected Manager(IList<T> o)
{
...
}
答案 1 :(得分:0)
可能是一个深夜'智慧匆忙'(这可能是错误的)。但修改我的界面是非通用的,如下所示:
public interface IManager
{
bool Add(ISomeObject o);
bool Remove(ISomeObject o);
bool Update(ISomeObject o);
}
我的抽象类如下:
public abstract class Manager<T> : IManager<T> where T : ISomeObject
{
protected readonly INeededObject obj;
protected Manager(INeededObject o)
{
obj = o;
}
public abstract bool Add(T o);
bool IManager.Add(ISomeObject obj)
{
return this.Add( (T) obj );
}
}