首页 > 解决方案 > 不可调用的成员“OperationResult”不能像方法一样使用

问题描述

我有这个课程的返回日期:

 public class OperationResult<TResult>
{
    public TResult Result { get; private set; }
    public bool Success { get; private set; }
    public string ErrorMessage { get; private set; } = null;
    public Exception Exception { get; private set; } = null;

    public static OperationResult<TResult> BuildSuccessResult(TResult result)
    {
        return new OperationResult<TResult> { Success = true, Result = result };

    }

    public static OperationResult<TResult> BuildFailure(string errorMessage)
    {
        return new OperationResult<TResult> { Success = false, ErrorMessage = errorMessage };

    }
    public static OperationResult<TResult> BuildFailure(Exception ex)
    {
        return new OperationResult<TResult> { Success = false, Exception = ex };
    }

    public static OperationResult<TResult> BuildFailure(Exception ex, string errorMessage)
    {
        return new OperationResult<TResult> { Success = false, Exception = ex, ErrorMessage = errorMessage };
    }
}

我用它作为函数的结果:

        public async Task<OperationResult<IEnumerable<TResult>>> GetAll<TResult>(string spName)
    {
        using (var connection = new SqlConnection(configration.ReportingConnection))
        {
            try
            {
                connection.Open();
                var query = await connection.QueryAsync<TResult>(spName);
                if (query != null)
                {
                    var res=  OperationResult<IEnumerable<TResult>>().BuildSuccessResult(query);
                }
                return new OperationResult<IEnumerable<TResult>>().BuildFailure("Error When Getting Date form DateBase");
            }
            catch (Exception ex)
            {
                return  OperationResult<IEnumerable<TResult>>().BuildFailure(ex,"");

            }
            finally
            {
                connection.Close();
            }
        }
    }

但它在这一行向我显示了这个错误:

不可调用的成员“OperationResult”不能像方法一样使用。

在这一行:

var res= OperationResult<IEnumerable<TResult>>().BuildSuccessResult(query);

或显示此错误

无法使用实例引用访问成员“OperationResult>.BuildFailure(string)”;使用类型名称而不是 AdminPanelGetWay.DAL.Dapper 来限定它

在这一行

return new OperationResult<IEnumerable<TResult>>().BuildFailure("Error When Getting Date form DateBase");

现在有什么问题?我怎么解决这个问题 ????

标签: c#asp.netasp.net-core

解决方案


那是因为你的方法都是静态的。代替

var res=  OperationResult<IEnumerable<TResult>>().BuildSuccessResult(query);

您需要删除“()”

var res=  OperationResult<IEnumerable<TResult>>.BuildSuccessResult(query);

推荐阅读