コード例 #1
0
        private List <IExchangeCurrency> CloneAvailableExchangeExcludePotential(IExchangeCurrency potential)
        {
            var availableExchangeExcludePotential = new List <IExchangeCurrency>(AvailableExchangeCurrency);

            availableExchangeExcludePotential.Remove(potential);
            return(availableExchangeExcludePotential);
        }
コード例 #2
0
        /// <summary>
        /// Create a new instance of ThroughExchange
        /// </summary>
        /// <param name="initialCurrency">Initial currency to change</param>
        /// <param name="targetCurrency">Target currency to expected</param>
        /// <param name="throughExchange"></param>
        /// <param name="availableExchangeExcludeCurrent">All avalaible exchange currency to chain with current</param>
        /// <returns>Return new Direct Exchange</returns>
        public static IExchangeChain Create(IExchangeCurrency throughExchange, string initialCurrency, string targetCurrency, IList <IExchangeCurrency> availableExchangeExcludeCurrent)
        {
            string changeTo;

            if (!throughExchange.CanChangeFrom(initialCurrency, out changeTo))
            {
                return(null);
            }

            var factory      = new ExchangeChainFactory(availableExchangeExcludeCurrent);
            var nextExchange = factory.Create(changeTo, targetCurrency);

            if (nextExchange == null)
            {
                return(null);
            }

            return(new ThroughExchange
            {
                _initialCurrency = initialCurrency,
                _intermediateCurrency = changeTo,
                _throughExchange = throughExchange,
                _nextExchange = nextExchange
            });
        }
コード例 #3
0
        /// <summary>
        /// Add a exchange currency on available exchange currency pool
        /// </summary>
        /// <param name="exchangeCurrency">New exchange currency</param>
        public void AddExchangeRate(IExchangeCurrency exchangeCurrency)
        {
            if (_availableExchangeCurrencyList.Contains(exchangeCurrency))
            {
                return;
            }

            _availableExchangeCurrencyList.Add(exchangeCurrency);
        }
コード例 #4
0
        /// <summary>
        /// Create a new instance of DirectExchange
        /// </summary>
        /// <param name="initialCurrency">Initial currency to change</param>
        /// <param name="targetCurrency">Target currency to expected</param>
        /// <param name="directExchangeCurrency"></param>
        /// <returns>Return new Direct Exchange</returns>
        public static IExchangeChain Create(IExchangeCurrency directExchangeCurrency, string initialCurrency, string targetCurrency)
        {
            if (directExchangeCurrency == null)
            {
                throw new ArgumentNullException("directExchangeCurrency");
            }

            return(new DirectExchange
            {
                _initialCurrency = initialCurrency,
                _targetCurrency = targetCurrency,
                _directExchangeCurrency = directExchangeCurrency
            });
        }
コード例 #5
0
        private IExchangeChain CreateNewChain(string initialCurrency, string targetCurrency, IExchangeCurrency potentialThroughExchange)
        {
            var availableExchangeExcludeCurrent = CloneAvailableExchangeExcludePotential(potentialThroughExchange);

            return(ThroughExchange.Create(potentialThroughExchange, initialCurrency, targetCurrency, availableExchangeExcludeCurrent));
        }