using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects.Options; using CryptoExchange.Net.SharedApis; using System; namespace CryptoExchange.Net.OrderBook { /// public class OrderBookFactory : IOrderBookFactory where TOptions: OrderBookOptions { private readonly Func?, ISymbolOrderBook> _symbolCtor; private readonly Func?, ISymbolOrderBook> _assetsCtor; /// /// ctor /// /// /// public OrderBookFactory(Func?, ISymbolOrderBook> symbolCtor, Func?, ISymbolOrderBook> assetsCtor) { _symbolCtor = symbolCtor; _assetsCtor = assetsCtor; } /// public ISymbolOrderBook Create(string symbol, Action? options = null) => _symbolCtor(symbol, options); /// public ISymbolOrderBook Create(string baseAsset, string quoteAsset, Action? options = null) => _assetsCtor(new SharedSymbol(TradingMode.Spot, baseAsset, quoteAsset), options); /// public ISymbolOrderBook Create(SharedSymbol symbol, Action? options = null) => _assetsCtor(symbol, options); } }