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