Я возвращаю ноль, если ответ успешен
Это не имеет смысла.Метод с Get
говорит мне, что что-то должно быть возвращено.
Я хотел бы вернуть сообщение об ошибке вместе с объектом (нулевым или нет) для отображения в моем сообщении winformесли это не удалось.
Вы можете заключить свой ответ в объект и использовать шаблон новый , соответствующий оператору is
, чтобы создать кодвыглядит действительно читабельно:
public interface ICallResult { }
public class CallSuccessful : ICallResult { }
public class CallFail : ICallResult
{
public string Details { get; set; }
}
public async Task<ICallResult> GetAsync(TResourceIdentifier identifier)
использование:
if ((await o.GetAsync(identifier)) is CallFail callFail)
{
Console.WriteLine(callFail.Details);
}
// or
if ((await o.GetAsync(identifier)) is CallSuccessful)
{
}
Некоторым чистым может не нравиться использование пустого класса, но я бы сказал, что читаемость, удобство обслуживания и расширяемость весят пустые классы,но это действительно зависит от вашего контекста.