algo de código para reproducir el problema:Por qué no habrá una clase derivada de una clase abstracta con una cláusula where echó a su nivel más bajo de clase común
using System;
public abstract class Response { }
public abstract class Request<T> where T : Response { }
public class LoginResponse : Response { }
public class LoginRequest : Request<LoginResponse> { }
public class Program
{
static void Main(string[] args)
{
LoginRequest login = new LoginRequest();
/* Error: Cannot implicitly convert type 'LoginRequest' to 'Request' */
Request<Response> castTest = login;
/* No Error */
Request<LoginResponse> castTest2 = login;
}
}
Por lo que yo puedo decir a la clase LoginRequest es una Solicitud <Respuesta> porque hereda de la solicitud <T> y LoginResponse hereda de Response, entonces, ¿alguien me puede aclarar por qué obtengo el error del compilador?
nota: También he intentado una conversión explícita
Gracias, mi comprensión de la covarianza es un poco delgada, necesito leer más. – Robert