如何使用通用自定义集合实现多态接口

问题描述

| 好的-所以我要完成的工作是:利用一个接受三个自定义类型之一(通过接口约束)的通用集合构建一个poly接口。 问题出在我为...编写实现时
public virtual CustCollection<CustType1> GetEntities()
{
    return new CustCollection<CustType1>();
}
然后尝试在下一个衍生层次上覆盖它。我什至无法选择重写此实现。 另一种可能性是利用接口,但是然后我需要接口接受通用类型,而不是指定类型...我似乎无法正常工作 即我需要的是:
interface IAccess<T>
{
    CustCollection<T> GetEntities();
}
但这似乎不是一个选择... 有什么建议么?     

解决方法

我说对了吗? :)
public interface IUnknown { }

public class SoAndSo : IUnknown { }

public class CustomCollection<IUnknown>
{
}

public class Ancestor<T> where T : IUnknown
{
    public virtual CustomCollection<T> GetEntities()
    {
        return null;
    }
}

public class Descender : Ancestor<SoAndSo>
{
    public override CustomCollection<SoAndSo> GetEntities()
    {
        return base.GetEntities();
    }
}
    ,我最终创建了一个接口(如上所示的IAccess),并将类型的约束放在该接口上……然后在与所讨论的类型进行交互的所有类上都使用了该接口。 所以(对不起,这是高级的,我无法写出我的实际实现)
interface IAccess<T> where T : ITypeInterface
{
    CustCollection<T> GetEntities(Filter filter);
}
我尝试了建议的方法,但是我继承了3个类的链,并且在使用建议模型的顶级父对象中遇到了问题。 我将约束留在了自定义集合上:
 public class CustCollection<T> : IEnumerable<T> where T : ITypeInterface
    {}
这仅对我真正有效,因为我意识到我确实不需要与父类共享功能(因此,基本上并没有最终实现真正的多态性……仅在公共对象交互的意义上,核心功能是完全独立的)。 为避免阴影,我声明新
  public new CustCollection<Type> GetEntities(Filter filter)
    {
        return new CustCollection<Type>();
    }
我希望这对某些人有帮助...尽管我并没有完全实现我最初打算做的事情,但我发现这是适合我的情况的解决方法。