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

时间:2013-10-30 08:46:13

标签: c# asp.net generics

我有一个包含API调用结果的通用APIResponse<T>对象:

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类型的方法吗?

2 个答案:

答案 0 :(得分:3)

方法定义应如下:

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

答案 1 :(得分:0)

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