我一直在与此争斗一段时间,所以任何帮助将不胜感激。这是我在C#.NET 4.0中遇到的场景。C#.NET 4.0抛出异常的泛型协方差问题
public interface ITableBusinessLogicLayerIn<in TTableRecord> : IBusinessLogicLayer
where TTableRecord : ITableRecord
{
// No definition
}
public interface ITableBusinessLogicLayerOut<out TTableRecord> : IBusinessLogicLayer
where TTableRecord : ITableRecord
{
// No definition
}
我有一个对象,它实现了两个接口。代码编译正常。但在运行时,我能够施放此对象如下:
(ITableBusinessLogicLayerOut<ITableRecord>)obj
但不是这样的:
(ITableBusinessLogicLayerIn<ITableRecord>)obj
这是非常令人困惑,我不知道我在做什么错。有人请给我指出正确的方向。谢谢!
我确定这与“in”泛型参数主要用于lambdas和方法而不用于类的事实有关,因为它们都是关于传递值“in”的。虽然这是我的一切。 :) – 2011-04-08 05:08:47