小编Rob*_*ert的帖子

为什么一个类派生自一个带有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;
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,LoginRequest类是一个Request <Response>,因为它继承自Request <T>,而LoginResponse继承自Response,所以任何人都可以告诉我为什么我得到编译器错误?

注意:我也试过一个明确的演员

c# inheritance abstract-class

6
推荐指数
3
解决办法
1106
查看次数

标签 统计

abstract-class ×1

c# ×1

inheritance ×1