static CAvailableCloneSearchAlgorithms()
        {
            m_CloneSearchAlgorithms = new Dictionary <CloneSearchAlgoritms, CBaseCloneSearchStrategy>();
            CBaseCloneSearchStrategy algorithm = new CBruteForceAlgorithm();

            m_CloneSearchAlgorithms.Add(algorithm.AlgorithmID(), algorithm);
            algorithm = new CHashBucketAlgorithm();
            m_CloneSearchAlgorithms.Add(algorithm.AlgorithmID(), algorithm);
        }
        public static CBaseCloneSearchStrategy GetAlgorithm(CloneSearchAlgoritms AlgorithmID)
        {
            CBaseCloneSearchStrategy value = null;

            switch (AlgorithmID)
            {
            case CloneSearchAlgoritms.BruteForceAlgorithm:
                value = new CBruteForceAlgorithm();
                break;

            case CloneSearchAlgoritms.HashBucketAlgorithm:
                value = new CHashBucketAlgorithm();
                break;
            }

            System.Diagnostics.Debug.Assert(value != null, "Error! value is null!");
            return(value);
        }