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

标签 c# asp.net generics

我有一个通用的 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 的类型?

最佳答案

方法定义应该如下:

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

关于c# - 具有泛型参数的 Asp.net 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677564/

相关文章:

c# - WPF C# 获取TreeView的根节点

c# - SpecialFolder.ApplicationData 返回默认用户

c# - gridview edititem 模板内的日历控件

asp.net - Team Foundation Server 端口 8080 ASMX 访问问题

java - 如何在 Java 的泛型(Erasure)中检索类型信息?

c# - Silverlight/XNA 动画滞后

asp.net - 在 App_Start 中编辑 MiniProfiler.cs 后更新 MiniProfiler.MVC3 NuGet 包

c# - 为什么这个 linq 表达式不起作用?

c# - 传递 List<MyType> 时,使用 Param List<T> 的 WCF 调用失败

java - 泛型数组的洗牌算法