我有一个例子,我想要一个抽象类接口来返回这样的东西
abstract class AnimalProcessor { public abstract IList ProcessResults();}
然后是具体的例子
class GiraffeProcessor : AnimalProcessor { public override IList ProcessResults() { return new List(); }}class LionProcessor : AnimalProcessor { public override IList ProcessResults() { return new List(); }}
问题是具体类需要具有相同的签名才能覆盖ProcessResults()方法,因此它们需要返回IList,但是我想要返回的ACTUAL数据是IList,IList等等,但调用代码必须这样做
GiraffeProcessor processor = new GiraffeProcessor();IList results = processor.GetResults();
哪个不给我一个我想要的Ilist.
问题
1)上面的代码没有编译. giraffeProcessor必须返回一个具体的List,你可以用Giraffe对象填充它,但你要构造的对象类型必须是List.不理想.
2)当您返回结果时,您只能获得IList,而不是IList.我已经尝试明确地向IList同的IList这会产生运行时错误,大概是因为返回的对象不是IList,它是IList其中包含长颈鹿的物体.
任何人都可以通过我的设计向我提出我在做错的事情,因为我有点难以实现这一目标.
解决方法:
怎么样:
abstract class AnimalProcessor where T : Animal { public abstract IList ProcessResults();}class GiraffeProcessor : AnimalProcessor { public override IList ProcessResults() { return new List(); }}class LionProcessor : AnimalProcessor { public override IList ProcessResults() { return new List(); }}