using System; using System.Collections.Generic; using System.Linq; class MyBaseClass {} class DerivedClassOne : MyBaseClass {} class DerivedClassTwo : MyBaseClass {} public class Test { public enum Option { Option1, Option2, Option3 } private static Dictionary> OptionMapping = new Dictionary> { { Option.Option1, () => new DerivedClassOne() }, { Option.Option2, () => new DerivedClassTwo() }, { Option.Option3, () => OptionMapping[Option.Option2]() } }; public static void Main() { // your code goes here } }