public static void InitializeProgram(Dictionary <PROGRAM, ProgramConfig> configs) { m_ProgramInfos.Clear(); for (int i = (int)PROGRAM.NONE + 1; i < (int)PROGRAM.COUNT; ++i) { PROGRAM program = (PROGRAM)i; if (!configs.ContainsKey(program)) { continue; } var config = configs[program]; ProgramInfo info = new ProgramInfo(program); info.CodeDirectory = config.CodeDirectory; info.DataDirectory = config.DataDirectory; info.Create = ToBoolean(config.Create, false); info.Compress = ToBoolean(config.Compress, false); DefaultInfo defaultInfo = (DefaultInfo)Attribute.GetCustomAttribute(program.GetType().GetMember(program.ToString())[0], typeof(DefaultInfo)); info.Extension = defaultInfo.Extension; info.GenerateTable = defaultInfo.GenerateTable != null ? (IGenerate)System.Activator.CreateInstance(defaultInfo.GenerateTable) : null; info.GenerateData = (IGenerate)System.Activator.CreateInstance(defaultInfo.GenerateData); info.GenerateMessage = (IGenerate)System.Activator.CreateInstance(defaultInfo.GenerateMessage); info.GenerateEnum = (IGenerate)System.Activator.CreateInstance(defaultInfo.GenerateEnum); info.GenerateConst = (IGenerate)System.Activator.CreateInstance(defaultInfo.GenerateConst); info.Bom = defaultInfo.Bom; m_ProgramInfos.Add(program, info); } PrintDirectory(); }