Я боролся с этим некоторое время, поэтому любая помощь будет принята с благодарностью. Вот сценарий, с которым я столкнулся на 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
Это очень запутанно, я не уверен, что делаю неправильно. Кто-нибудь, пожалуйста, укажите мне в правильном направлении. Спасибо!