来自通用接口的通用抽象基类

Kun*_*nal 3 generics inheritance abstract-class interface c#-4.0

我试图了解哪种层次结构最适合继承,如下所述。到目前为止,我有以下内容:

public interface IManager<T> where T : ISomeObject
{
    bool Add(T o);
    bool Remove(T o);
    bool Update(T o);
}
Run Code Online (Sandbox Code Playgroud)

但是后来我希望每个派生类都有一个参数化的构造函数。所以我去了:

public abstract class Manager<T> : IManager<T> where T : ISomeObject
{
    protected readonly INeededObject obj;

    protected Manager(INeededObject o)
    {
         obj = o;
    }
}
Run Code Online (Sandbox Code Playgroud)

关于我应该如何解决这个设计问题的任何想法?提前致谢。

p.s*_*w.g 5

您快到了。您也可以在基类中使用泛型类型参数。

public abstract class Manager<T> : IManager<T> where T : ISomeObject
{
    protected readonly T obj;

    protected Manager(T o)
    {
         obj = o;
    }
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用参数化类型,例如

protected Manager(IList<T> o)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)