【发布时间】:2011-01-17 08:47:15
【问题描述】:
我确定我遗漏了一些简单的东西,但是我正在尝试将所有实现接口的对象的强类型列表转换为该接口类型的列表。
下面是一个演示错误的示例:
public void ExampleCode(){
List<Cube> cubes = new List<Cube>();
List<Shape> allShapes;
allShapes = cubes;//Syntax Error
allShapes = (List<Shape>)cubes;//Syntax Error
}
public class Cube : Shape
{
public int ID { get; set; }
public int Sides { get; set; }
}
public interface Shape
{
int ID { get; set; }
int Sides { get; set; }
}
【问题讨论】:
-
注意:问题中的代码被表述为演员表(即同一对象的不同视图)。下面给出的不同解决方法复制列表 - 创建一个新列表并将每个 Shape 元素添加到新列表中 - 给出不同的对象,而不是同一对象的不同视图。
标签: c# .net generics interface type-conversion