Esempio n. 1
0
        /// <summary>
        /// 注册JSON数据表
        /// </summary>
        /// <param name="name"></param>
        /// <param name="xmlStr"></param>
        public void RegisterXMLTable(string name, string xmlStr)
        {
            if (_xmlStructFolder == null)
            {
                App.logManager.Error("TableManager.RegisterXMLTable Error:XMLStructFolder has not set!");
                return;
            }

            // 判断原型字典中是否存在该数据原型
            IXMLTable xmlTable = GetXMLTablePrototype(name);

            if (xmlTable == null)
            {
                xmlTable = (IXMLTable)ReflectionHelper.CreateInstance(_xmlStructFolder + name);
            }
            if (xmlTable == null)
            {
                return;
            }
            _xmlTablePrototypeDict[name] = xmlTable;

            // 获取数据表字典
            Dictionary <int, IXMLTable> dict;

            if (_xmlTableDict.TryGetValue(name, out dict) == false)
            {
                dict = _xmlTableDict[name] = new Dictionary <int, IXMLTable>();
            }

            // 根据原型生成新数据并填充数据
            xmlTable = xmlTable.ClonePrototype();
            dict[xmlTable.FillData(xmlStr)] = xmlTable;
            xmlTable.InitData();
        }
Esempio n. 2
0
        /// <summary>
        /// 根据表名、ID获取XML数据表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <param name="ID"></param>
        /// <returns></returns>
        public T GetXMLTable <T>(string name, int ID) where T : IXMLTable
        {
            IXMLTable table = GetXMLTable(name, ID);

            return((T)table);
        }