diff --git a/CryptoExchange.Net/Clients/BaseClient.cs b/CryptoExchange.Net/Clients/BaseClient.cs index 6455958..dce39b2 100644 --- a/CryptoExchange.Net/Clients/BaseClient.cs +++ b/CryptoExchange.Net/Clients/BaseClient.cs @@ -12,6 +12,28 @@ namespace CryptoExchange.Net.Clients /// public abstract class BaseClient : IDisposable { + /// + /// Version of the CryptoExchange.Net base library + /// + public Version CryptoExchangeLibVersion { get; } = typeof(BaseClient).Assembly.GetName().Version; + + /// + /// Version of the client implementation + /// + public Version ExchangeLibVersion + { + get + { + lock(_versionLock) + { + if (_exchangeVersion == null) + _exchangeVersion = GetType().Assembly.GetName().Version; + + return _exchangeVersion; + } + } + } + /// /// The name of the API the client is for /// @@ -27,6 +49,9 @@ namespace CryptoExchange.Net.Clients /// protected internal ILogger _logger; + private object _versionLock = new object(); + private Version _exchangeVersion; + /// /// Provided client options /// @@ -57,7 +82,7 @@ namespace CryptoExchange.Net.Clients throw new ArgumentNullException(nameof(options)); ClientOptions = options; - _logger.Log(LogLevel.Trace, $"Client configuration: {options}, CryptoExchange.Net: v{typeof(BaseClient).Assembly.GetName().Version}, {Exchange}.Net: v{GetType().Assembly.GetName().Version}"); + _logger.Log(LogLevel.Trace, $"Client configuration: {options}, CryptoExchange.Net: v{CryptoExchangeLibVersion}, {Exchange}.Net: v{ExchangeLibVersion}"); } ///