我一直在與此爭鬥一段時間,所以任何幫助將不勝感激。這是我在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