如何使用自定义多态类型的集合获得多态行为?

How can I get Polymorphic behavior with collections of custom polymorphic types?

我有一个超类,Super 有一个子类 SubA

public class Super{}

public class SubA : Super{}

我想要一个接口来定义对 Super 集合的一些操作。

public interface IDoer
{
    List<Super> GetObjects();
    void SaveObjects(List<Super> items);
}

所以基本上,我希望能够以多态方式传递 Supers 的集合,但 List<SubA> 不是 List<Super>。所以我的 subADoer 没有实现 IDoer。

public class SubADoer : IDoer
{
    public List<SubA> GetObjects{ return new SubA()}
    public void SaveObjects(List<SubA> items){//save}
}

我如何抽象对象的列表(或其他一些集合类型)来反映组成它们的类型之间的关系?

你需要使用泛型,像这样:

public interface IDoer<T> where T : Super
{
    List<T> GetObjects();
    void SaveObjects(List<T> items);
}

public class SubADoer : IDoer<SubA>
{
    public List<SubA> GetObjects()
    {
        // ...
    }

    public void SaveObjects(List<SubA> items)
    {
        // ...
    }
}