我有两个类:
public class MyClass
{
public int Foo { get; set; }
public string Bar { get; set; }
}
public class MyList : List<MyClass>
{
}
在其他代码中,我正在为来自数据库的每个记录创建MyClass
的实例,并希望将它们全部返回到MyList
的实例中:
var records = _repository.GetRecords();
return (MyList) records.Select(x => x.ConvertTo<MyClass>()).ToList();
代码编译没有问题,但是抛出了一个运行时
InvalidCastException
异常:
我不明白为什么会出现这个错误,因为无法将类型为“System.Collections.Generic.List`1[MyClass]”的对象强制转换为类型“MyList”。
MyList
就是一个List<MyClass>
。我找到了一些相关的问题,都涉及到协变性。 这个问题与我的问题最相似,但我不知道如何适应答案来解决我的问题。 我的问题:
如何从数据库记录构建一个
MyList
实例?我正在使用C#和.NET 4.0。
List<MyClass>
不会自动变成MyList
。但是你可以创建一个构造函数,接受一个List<MyClass>
。 - It'sNotALie.