Just a little idea to make SkillName -> SkillInfo casting possible... public static explicit operator SkillInfo(SkillName name) { return Table[(int)name]; } This way, you could, for example, simply write... SkillInfo info =...