Почему класс, производный от абстрактного класса с предложением where, не приводит к его низшему общему классу

Некоторый код для репликации проблемы:

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;
    }
}

Насколько я могу судить, класс LoginRequest является Request , потому что он наследуется от Request , а LoginResponse наследуется от Response, так что кто-нибудь может просветить меня относительно того, почему я получаю ошибку компилятора?

примечание: я также пробовал явное приведение

6
задан Robert 23 January 2012 в 15:56
поделиться