public IDataConvert GetConvertChain(List <string> versions, Dictionary <string, string> convertInfo, string dllName)
        {
            IDataConvert result;

            if (versions.Count != 0)
            {
                string       text = versions[0];
                object       objectFromAssembly = AssemblyAssist.GetObjectFromAssembly(convertInfo[text], dllName);
                IDataConvert dataConvert        = objectFromAssembly as IDataConvert;
                dataConvert.SetVersion(text);
                versions.Remove(text);
                convertInfo.Remove(text);
                if (dataConvert.GetNext() == null)
                {
                    IDataConvert convertChain = this.GetConvertChain(versions, convertInfo, dllName);
                    dataConvert.SetNext(convertChain);
                    result = dataConvert;
                }
                else
                {
                    result = dataConvert;
                }
            }
            else
            {
                result = null;
            }
            return(result);
        }
        private void CreateSubSys()
        {
            SubSysCfgReader             subSysCfgReader = new SubSysCfgReader(this.m_CfgFile);
            Dictionary <string, string> subSysTypeName  = subSysCfgReader.GetSubSysTypeName();
            Dictionary <string, Dictionary <string, string> > subSysConvertName = subSysCfgReader.GetSubSysConvertName();

            foreach (string current in subSysTypeName.Keys)
            {
                string         text  = subSysTypeName[current];
                IGeneralSubSys geSys = null;
                try
                {
                    object objectFromAssembly = AssemblyAssist.GetObjectFromAssembly(current, text);
                    geSys = (objectFromAssembly as IGeneralSubSys);
                }
                catch (Exception ex)
                {
                    WriteLog.Logger.Error(string.Concat(new string[]
                    {
                        "Load ",
                        text,
                        "Failed :",
                        ex.Message,
                        " ",
                        ex.StackTrace
                    }));
                    throw ex;
                }
                this.CreateSubSysCall0(subSysConvertName, current, text, geSys);
            }
        }