声明为IEnumerable的接口但不能用作此类

3

我有一个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,你知道如何实现吗?如果尝试这样做,它会抱怨 IBrands 在 IEnumerable 中的强制转换。

谢谢!


1
请检查 SelectMany 返回的内容,它可能是一个 IEnumerable<IEnumerable<IBrand>> - Davin Tryon
你能展示给我们具体的错误信息吗?_carsDic的声明是什么? - Matthew Watson
错误:"无法将表达式类型 'SystemC.Collections.Generic.List<Interfaces.IBrand>' 转换为返回类型 'Interfaces.IBrands'" - goul
1个回答

3
IBrands是IEnumerable,但反之则不成立。因此,您不能将IEnumerable返回为IBrands。
根据Brands实际表示的内容,您可以创建另一个Brands实例。
return new Brands(_carsDic.Values);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接