public static Func <DictBase> Switch <T>(AlgorithmKind kind) { switch (kind) { case AlgorithmKind.Precision: return(() => PrecisionDictOperator <T> .Create()); case AlgorithmKind.Hash: return(() => HashDictOperator <T> .Create()); case AlgorithmKind.Fuzzy: return(() => FuzzyDictOperator <T> .Create()); default: throw new InvalidOperationException("Unknown AlgorithmKind."); } }