接口声明为IEnumerable但不可用

时间:2013-04-08 09:40:17

标签: c# casting ienumerable

我有一个IEnumerable接口:

public interface IBrands: IEnumerable<Ibrand>

它的实例:

public class Brands: IBrands
{
    public Brands()
    {
        _brandsDic= new Dictionary<int, IBrand>();
    }
}

当我使用Linq来检索另一个类中的某些数据时,我不得不返回一些IEnumerable:

public IEnumerable<IBrand> GetCarsBrands()
{
    return _carsDic.SelectMany(r => r.Value.Brands).ToList();
}

...但希望直接返回IBrands。你知道吗?如果我尝试这样做,它会抱怨在IEnumerable中投放IBrands。

谢谢!

1 个答案:

答案 0 :(得分:3)

IBrands是IEnumerable<IBrand>,但不是相反。因此,您无法返回IEnumerable<IBrand>作为IBrands。

根据Brands实际代表的内容,您可以创建另一个品牌实例。

return new Brands(_carsDic.Values);