Я предполагаю, что вы получаете ошибку компиляции здесь:
public ClaimRepository<WarrantyClaimBase> Get()
{
return new TestClaimRepository();
}
Проблема в том, что TestClaimRepository
наследуется от ClaimRepository<GWMWarrantyClaim>
, который не наследуется от ClaimRepository<WarrantyClaimBase>
.
Фактически, ClaimRepository<GWMWarrantyClaim>
наследуется от объекта и не более связан с ClaimRepository<WarrantyClaimBase>
, чем с string
с точки зрения иерархии наследования.
Похоже, вы предполагаете, что T : U
подразумеваетM<T> : M<U>
для универсального типа M. Это никогда не относится к классам.(Если бы ClaimRepository был интерфейсом, вы могли бы избежать этого. Я рекомендую прочитать о ковариации в .NET)