推断嵌套泛型类型的更好解决方案?

时间:2021-07-20 19:42:51

标签: c# generics

我有一个这样的通用类

public class ApiResponse<TResult, TError>
{
    public TResult Result { get; set; }

    public TError Error { get; set; }

    public string RawErrorContent {get; set;}

    public string ReasonPhrase { get; set;}
}

并且该类被另一个非泛型类继承

public class FoobarApiAuthResponse : ApiResponse<FoobarAuthToken, string> { }

我希望下一个方法可以处理从 ApiResponse 继承的任何类。所以它看起来像这样:

public static async Task<TApiResponse>
    ReadApiResultAsync<TApiResponse, TResult, TError>(this HttpResponseMessage response)
    where TApiResponse : ApiResponse<TResult, TError>, new()
{ ... }

但我必须使用它指定所有泛型类型

tokenResponse.ReadApiResultAsync<FoobarApiAuthResponse, FoobarAuthToken, string>();

考虑到与 FoobarApiAuthResponse 一起使用哪个 TInput 和 TError 很明显,这看起来很麻烦

是否有一个具有相同敏捷性水平的解决方案可以像

一样使用
tokenResponse.ReadApiResultAsync<FoobarApiAuthResponse>

0 个答案:

没有答案