#c# #visual-studio #resharper
Вопрос:
ReSharper показывает предупреждение о том, что «Исключение CallFailedException не задокументировано» в классе SpotBotClient
, в то время как оно должно наследоваться от интерфейса.
Когда я делаю следующее, оно исчезает:
/// <inheritdoc />
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">Condition.</exception>
public override async Task<Balance> GetBalanceAsync(string asset, CancellationToken ct = default)
{
var result = await _client.General.GetAccountInfoAsync(ct: ct).ConfigureAwait(false);
if (!result.Success)
{
_logger.LogError(
$"Error while getting Spot balance for {asset} | Error code: {result.Error?.Code} | Error message: {result.Error?.Message}");
throw new CallFailedException(
$"Error while getting Spot balance for {asset} | Error code: {result.Error?.Code} | Error message: {result.Error?.Message}");
}
return result.Data.Balances.FirstOrDefault(x => x.Asset.Equals(asset, StringComparison.OrdinalIgnoreCase))
.ToBalance();
}
public interface IBotClient
{
/// <summary>
/// Gets account balance for an asset.
/// </summary>
/// <param name="asset">The asset.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balance.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">Thrown if the call fails.</exception>
Task<Balance> GetBalanceAsync(string asset, CancellationToken ct = default);
}
/// <summary>
/// Abstract base class for implementations of the <see cref="IBotClient" />.
/// </summary>
public abstract class BotClientBase : IBotClient
{
private readonly IBinanceClient _client;
private readonly IBinanceSocketClient _socketClient;
protected BotClientBase(IBinanceClient client, IBinanceSocketClient socketClient)
{
_client = client;
_socketClient = socketClient;
}
/// <inheritdoc />
public abstract Task<Balance> GetBalanceAsync(string asset, CancellationToken ct = default);
}
public class SpotBotClient : BotClientBase
{
private readonly ILogger<SpotBotClient> _logger;
private readonly IBinanceClient _client;
private readonly IBinanceSocketClient _socketClient;
public SpotBotClient(ILogger<SpotBotClient> logger, IBinanceClient client, IBinanceSocketClient socketClient) :
base(client, socketClient)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_client = client;
_socketClient = socketClient;
}
/// <inheritdoc />
public override async Task<Balance> GetBalanceAsync(string asset, CancellationToken ct = default)
{
var result = await _client.General.GetAccountInfoAsync(ct: ct).ConfigureAwait(false);
if (!result.Success)
{
_logger.LogError(
$"Error while getting Spot balance for {asset} | Error code: {result.Error?.Code} | Error message: {result.Error?.Message}");
throw new CallFailedException(
$"Error while getting Spot balance for {asset} | Error code: {result.Error?.Code} | Error message: {result.Error?.Message}");
}
return result.Data.Balances.FirstOrDefault(x => x.Asset.Equals(asset, StringComparison.OrdinalIgnoreCase))
.ToBalance();
}
}
Ответ №1:
Эта конкретная проверка исходит не от самого РеШарпера, а от расширения «Исключительный для РеШарпера». Однако, как я вижу, вы уже представили новый выпуск в репозитории GitHub.
Комментарии:
1. Друг сделал это, но да.