Asp.net 具有泛型参数的方法

本文关键字:参数 方法 泛型 net Asp | 更新日期: 2023-09-27 18:37:22

我有一个通用的APIResponse<T>对象,它包装了API调用的结果:

public class APIError
{
    public string ErrorMessage { get; set; }
}
public class APIResponse<T>
{
    public T Result { get; set; }
    public APIError Error { get; set; }
    public bool HasError
    {
        get { return Error != null; }
    }
}

我有一个调用 API 的方法:

public APIResponse<string> GetUserName()
{
    APIResponse<string> response = new APIResponse<string>();
    try
    {
        // make http request
        response.Result = httpResponse;
    }
    catch
    {
        response.Error = new APIError { ErrorMessage = "Some error occurred" };
    }
    return response;
}
// I call the method like this
APIResponse<string> userNameResponse = GetUserName();
// i need to handle the apiResponse
HandleAPIResponse(userNameResponse);

我想创建一个通用方法来检查APIResponse<T>对象,并在有错误时引发异常,但如果不指定结果类型,我就无法使其工作:

public void HandleAPIResponse(APIResponse<T> apiResponse)
{
    if (apiResponse.HasError)
        throw new Exception(apiResponse.Error.ErrorMessage);
}

我可以创建一个接受APIResponse<T>作为参数但不指定 T 类型的方法吗?

Asp.net 具有泛型参数的方法

方法定义应如下所示:

public void HandleAPIResponse<T>(APIResponse<T> apiResponse)
{
    if (apiResponse.HasError)
        throw new Exception(apiResponse.Error.ErrorMessage);
}
如果我

错了,有人纠正我,但我认为这是不可能的,因为这将假设一个重载样式类型并引用不同的类型。