Arc*_*ird 2 c# collections polymorphism abstraction
我有一个超类,Super有一个子类SubA
public class Super{}
public class SubA : Super{}
Run Code Online (Sandbox Code Playgroud)
我想要一个接口来定义对Super.
public interface IDoer
{
List<Super> GetObjects();
void SaveObjects(List<Super> items);
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,我希望能够多态地传递 的集合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}
}
Run Code Online (Sandbox Code Playgroud)
我如何抽象对象的列表(或其他一些集合类型)来反映构成它们的类型之间的关系?
您需要使用泛型,如下所示:
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)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)