具有泛型参数的泛型方法

时间:2021-03-04 10:47:52

标签: c# generics generic-method

我想用这样的泛型参数创建泛型方法:

public class BaseResponse<T>
{
    public ResponseReturnCode Code { get; set; }
    public string Description { get; set; }
    public T Data { get; set; }
}
public class LoginResponse : BaseResponse<LoginData> 
 private async Task<T> CreateResponse<T,U>(HttpResponseMessage responseMessage) where T : BaseResponse<U>
        {    
            var responseBody = await responseMessage.Content.ReadAsStringAsync();
               
            var responseDto = JsonConvert.DeserializeObject<T>(responseBody);
            // Some additional stuff here but I am not need U type for that.
            // I am only touching not generic part of BaseResponse here.
            //...
            return responseDto;
        }

这是有效的:

var responseDto = await CreateResponse<LoginResponse, LoginData>(responseMessage);
private async Task<T> CreateResponse<T,U>(HttpResponseMessage responseMessage) where T : BaseResponse<U> {...}

我不想在调用此方法时指定内部类型“LoginData”。 但是这个声明不起作用:

var responseDto = await CreateResponse<LoginResponse>(responseMessage);
private async Task<T> CreateResponse<T>(HttpResponseMessage responseMessage) where T : BaseResponse<U> where U : class
{...}

“U”类型我未知...

这也不起作用:

var responseDto = await CreateResponse<LoginResponse>(responseMessage);
private async Task<T> CreateResponse<T>(HttpResponseMessage responseMessage) where T : BaseResponse<object>
{...}

在 Java 中,我可以使用通配符,但在 c# 中很容易解决这个问题?

0 个答案:

没有答案
相关问题