以下代码在我的doStuffToLines(segments)
我不能这样做,因为我的DimensionLineSegment
继承了行吗?
private void doStuff()
{
List<DimensionLineSegment> segments = new List<DimensionLineSegment>();
doStuffToLines(segments);
}
private void doStuffToLines(List<Line> lines)
{
}
答案 0 :(得分:3)
您无法将具体类型传递给方法,因为List不是协变的。
您可以尝试这样的事情:
public void doStuffToLines<T>(IList<T> lines) where T : Line
{
//do some thing
}
通过指定泛型约束,可以限制传递给Line类型对象的泛型类型或它的派生后代。
需要注意的一点是,如果您使用的是.NET 4.0,则可能会将您的方法从接受List更改为IEnumerable,因为T generic参数是协变的。