3

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

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;
    }
}

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

4

2 回答 2

5

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

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)
{
    ...
}
于 2013-03-22T23:37:40.370 回答
1

可能有点深夜的“智慧热潮”(这可能又是错误的)。但是将我的界面修改为非通用界面,如下所示:

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 );
    }
}
于 2013-04-12T09:00:55.210 回答