如果我在两种类型之间定义显式转换运算符,难道不应该遵循我可以在这些类型的集合之间进行显式转换吗?就是

    public static explicit operator FooEntity(Entity entity)
    {
        FooEntity e = new FooEntity(entity);
        return e;
    }


因此,我可以这样做

    IEnumerable<Entity> entities = GetEntities();
    IEnumerable<FooEntity> fooEntities = (IEnumerable<FooEntity>)entities;


要么

    IEnumerable<FooEntity> fooEntities = entities as IEnumerable<FooEntity>


这是否可能以某种方式出现?还是我还必须创建自己的运算符以在集合之间进行转换?我收到一个运行时错误消息,提示无法进行转换。

谢谢。

最佳答案

C#在集合分配上不支持这种通用类型差异的方法,您必须使用类似以下内容的方法:

IEnumerable<FooEntity> fooEntities = entities.Select(e => (FooEntity)e);

07-24 14:40