私はしばらくこれと戦ってきましたので、助けていただければ幸いです。これが私がC#.NET4.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
これは非常に紛らわしいです、私は私が間違っていることをよくわかりません。誰かが私を正しい方向に向けてください。ありがとう!