Decir que tengo las siguientes tres clases/interfaces:¿Por qué no se puede convertir este tipo genérico?
public interface IImportViewModel
{
}
public class TestImportViewModel : IImportViewModel
{
}
public class ValidationResult<TViewModel> where TViewModel : IImportViewModel
{
}
Como TestImportViewModel implementa IImportViewModel, ¿por qué será lo siguiente que no se compile?
ValidationResult<IImportViewModel> r = new ValidationResult<TestImportViewModel>();
entiendo lo que el mensaje de error "No se puede convertir implícitamente el tipo 'ValidationResult' a 'ValidationResult'" significa. Simplemente no entiendo por qué este es el caso. ¿No sería esto covarianza?
Estoy asumiendo que su clase _TestImportViewModel_ se supone que es _TViewModel_? (El código anterior no muestra la clase TViewmModel en absoluto). –
Sí. TestImportViewModel implementa IImportViewModel y, por lo tanto, __debe ser capaz de ser utilizado como una implementación de TViewModel como TViewModel: IImportViewModel. – devlife
@Sam TViewmModel (también conocido como) es un tipo de IImportViewModel no es una clase. –
Reniuz