【发布时间】:2011-04-08 04:59:40
【问题描述】:
我已经为此奋斗了一段时间,因此将不胜感激。这是我在 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”泛型参数主要用于 lambda 和方法而不是类的事实有关,因为它们都是关于传递一个值“in” .这就是我所拥有的。 :)
标签: .net generics c#-4.0 covariance contravariance