Невыбираемый член OperationResult нельзя использовать как метод - PullRequest
0 голосов
/ 16 марта 2020

У меня есть этот класс для даты возвращения:

 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);

или показать эту ошибку

Member 'OperationResult> .BuildFailure (строка) 'не может быть доступен со ссылкой на экземпляр; вместо этого укажите имя типа AdminPanelGetWay.DAL.Dapper

в этой строке

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

Теперь в чем проблема? как я могу решить эту проблему ????

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Когда вы вызываете static методы в классе, вам не нужно создавать объекты этого класса.

Вы можете вызывать метод stati c внутри класса напрямую с именем класса. (см. this )

Замените два предложения с ошибкой следующим:

    //....
    var res = OperationResult<IEnumerable<TResult>>.BuildSuccessResult(query); 
    //....
    return OperationResult<IEnumerable<TResult>>.BuildFailure("Error When Getting Date form DateBase");
    //....
0 голосов
/ 16 марта 2020

Это потому, что все ваши методы устарели c. Вместо

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

Вам необходимо удалить "()"

var res=  OperationResult<IEnumerable<TResult>>.BuildSuccessResult(query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...