Exemple #1
0
        public static IAlgo CreateAlgo(AlgoType algoType, int?start = null, double?value = null)
        {
            IAlgoFactory factory = null;

            if (!Factories.ContainsKey(algoType))
            {
                throw new Exception("Invalid algo type");
            }
            switch (algoType)
            {
            case AlgoType.Constant:
                Factories.TryGetValue(AlgoType.Constant, out factory);
                break;

            case AlgoType.Increment:
                Factories.TryGetValue(AlgoType.Increment, out factory);
                break;

            case AlgoType.Multiple:
                Factories.TryGetValue(AlgoType.Multiple, out factory);
                break;

            case AlgoType.Exp:
                Factories.TryGetValue(AlgoType.Exp, out factory);
                break;

            case AlgoType.Fibonacci:
                Factories.TryGetValue(AlgoType.Fibonacci, out factory);
                break;
            }
            try
            {
                IAlgo algo = null;
                if (value.HasValue)
                {
                    algo = factory.CreateAlgo(start.Value, value.Value);
                }
                else if (start.HasValue)
                {
                    algo = factory.CreateAlgo(start.Value);
                }
                else
                {
                    algo = factory.CreateAlgo();
                }

                return(algo);
            }
            catch
            {
                throw new Exception($"Invalid parameters for algo type: {algoType.ToString()}");
            }
        }
Exemple #2
0
 public SearchInfoBuilder(TextReader inputStream, TextWriter outputStream, IAlgoFactory <T> algoFactory)
 {
     input  = inputStream;
     output = outputStream;
     algo   = algoFactory;
 }