Một số mã để tái tạo vấn đề:Tại sao không phải là một lớp được thừa kế từ một lớp trừu tượng với một mệnh đề where đúc đến lớp chung thấp nhất
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;
}
}
Như xa như tôi có thể nói với lớp LoginRequest là một yêu cầu < Phản hồi > vì được kế thừa từ Yêu cầu <T> và LoginResponse kế thừa từ Phản hồi để mọi người có thể khai sáng cho tôi biết tại sao tôi gặp lỗi trình biên dịch?
lưu ý: tôi cũng đã cố gắng chuyển kiểu tường minh
Xin cảm ơn, sự hiểu biết về hiệp phương sai của tôi hơi cần phải đọc nhiều hơn. – Robert