如何使用自定义多态类型的集合获得多态行为?
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)
{
// ...
}
}
我有一个超类,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)
{
// ...
}
}