From c1b2b62dbcf1d26467a6a3e909b76a0aa355c2ba Mon Sep 17 00:00:00 2001 From: JKorf Date: Sun, 2 Nov 2025 15:17:44 +0100 Subject: [PATCH] Added AliasType to specify only one way conversion for AssetAliases --- CryptoExchange.Net/Objects/AssetAlias.cs | 22 ++++++++++++++++++- .../Objects/AssetAliasConfiguration.cs | 14 ++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/CryptoExchange.Net/Objects/AssetAlias.cs b/CryptoExchange.Net/Objects/AssetAlias.cs index 5829d09..5ef6bc7 100644 --- a/CryptoExchange.Net/Objects/AssetAlias.cs +++ b/CryptoExchange.Net/Objects/AssetAlias.cs @@ -9,6 +9,10 @@ namespace CryptoExchange.Net.Objects /// public class AssetAlias { + /// + /// Alias type + /// + public AliasType Type { get; set; } /// /// The name of the asset on the exchange /// @@ -21,10 +25,26 @@ namespace CryptoExchange.Net.Objects /// /// ctor /// - public AssetAlias(string exchangeName, string commonName) + public AssetAlias(string exchangeName, string commonName, AliasType type = AliasType.BothWays) { ExchangeAssetName = exchangeName; CommonAssetName = commonName; + Type = type; } } + + /// + /// Alias type + /// + public enum AliasType + { + /// + /// Translate both from and to exchange + /// + BothWays, + /// + /// Only translate when converting to exchange + /// + OnlyToExchange + } } diff --git a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs index ab5622f..763b6ec 100644 --- a/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs +++ b/CryptoExchange.Net/Objects/AssetAliasConfiguration.cs @@ -23,12 +23,22 @@ namespace CryptoExchange.Net.Objects /// /// Map the common name to an exchange name for an asset. If there is no alias the input name is returned /// - public string CommonToExchangeName(string commonName) => !AutoConvertEnabled ? commonName : Aliases.SingleOrDefault(x => x.CommonAssetName == commonName)?.ExchangeAssetName ?? commonName; + public string CommonToExchangeName(string commonName) => !AutoConvertEnabled ? commonName : Aliases.FirstOrDefault(x => x.CommonAssetName == commonName)?.ExchangeAssetName ?? commonName; /// /// Map the exchange name to a common name for an asset. If there is no alias the input name is returned /// - public string ExchangeToCommonName(string exchangeName) => !AutoConvertEnabled ? exchangeName : Aliases.SingleOrDefault(x => x.ExchangeAssetName == exchangeName)?.CommonAssetName ?? exchangeName; + public string ExchangeToCommonName(string exchangeName) + { + if (!AutoConvertEnabled) + return exchangeName; + + var alias = Aliases.FirstOrDefault(x => x.ExchangeAssetName == exchangeName); + if (alias == null || alias.Type == AliasType.OnlyToExchange) + return exchangeName; + + return alias.CommonAssetName; + } } }