我有一个通用接口IConstrained,它由通用Constrained类实现。当我尝试执行以下代码时,出现无效的强制转换异常。

IConstrained<decimal> decimalLimit = new Constrained<decimal>(1);
IConstrained<IComparable> comparableLimit = (IConstrained<IComparable>) decimalLimit;


如果十进制实现IComparable,为什么不能这样做?正确的方法是什么?谢谢。

最佳答案

Generic types are not covariant in .NET 2.0.这也包括.NET 3.0 / 3.5,因为它们使用相同的2.0运行时。 .NET 4.0 will support covariance,但是。

10-07 17:10