我有这些接口:



这段代码:

IList<IFinder<IDomainObject>> finders = new List<IFinder<IDomainObject>>();
IFinder<IOrder> orderFinder = this.mocks.StrictMock<IFinder<IOrder>>();
finders.Add(orderFinder);


我在第三行收到此错误:


  参数“ 1”:无法从“ Mes.FrameworkTest.Repository.Finders.IFinder >”转换为“ Mes.FrameworkTest.Repository.Finders.IFinder >”


当IOrder从IDomainObject派生时,为什么会出现此错误?

最佳答案

这需要.Net 4对协方差的支持,可以这样表示:

interface IFinder<out T> ...


如果您没有.Net 4(VS 2010),那您就不走运了。

关于c# - 将派生接口(interface)添加到通用接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3676448/

10-13 02:53