Exemplo n.º 1
0
        public void Reload()
        {
            TableParser.Parse <T>(TableName(), InitModel, data =>
            {
                if (data != null)
                {
                    keyModelMap.Clear();

                    modelArray = data;

                    for (var i = 0; i < modelArray.Length; ++i)
                    {
                        if (modelArray[i] != null)
                        {
                            var key = modelArray[i].Key();
                            if (keyModelMap.ContainsKey(key))
                            {
                                keyModelMap[key] = i;
                            }
                            else
                            {
                                keyModelMap.Add(key, i);
                            }
                        }
                    }
                }

                MessageAggregator <object> .Instance.Publish(MessageType.TableMgrLoadFinish, this, null);
            });
        }
Exemplo n.º 2
0
        private static void GenerateModelFile(string tableName)
        {
            tableName = tableName.Substring(0, tableName.Length - 4); // 去掉".csv"

            if (string.IsNullOrEmpty(tableName))
            {
                Debug.LogError("脚本名不能为空");
                return;
            }

            var scriptFoldPath = ScriptFoldPath + tableName;

            if (!Directory.Exists(scriptFoldPath))
            {
                Directory.CreateDirectory(scriptFoldPath);
            }

            string codeFullName = scriptFoldPath + "/" + tableName + ".cs";

            using (FileStream fs = new FileStream(codeFullName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))

                using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
                {
                    var headers = TableParser.GetTableHeaders(ConfigFoldPath + "/" + tableName);
                    var sb      = new StringBuilder();
                    sb.AppendLine("using System.Collections.Generic;");
                    sb.AppendLine("");
                    sb.AppendLine(string.Format("public class {0}Model : ITableModel", tableName));
                    sb.AppendLine("{");
                    for (var i = 0; i < headers[0].Count; i++)
                    {
                        sb.AppendLine(string.Format("    /// {0}", headers[2][i]));
                        sb.AppendLine(string.Format("    public {0} {1} ", headers[1][i], headers[0][i]) + " { get; set; }");
                    }
                    sb.AppendLine("");
                    sb.AppendLine("    public object Key()");
                    sb.AppendLine("    {");
                    sb.AppendLine("        return Id;");
                    sb.AppendLine("    }");
                    sb.AppendLine("}");
                    sb.AppendLine("");
                    sb.AppendLine(string.Format("public class {0}ModelMgr : TableManager<{1}Model>", tableName, tableName, tableName));
                    sb.AppendLine("{");
                    sb.AppendLine("    public override string TableName()");
                    sb.AppendLine("    {");
                    sb.AppendLine(string.Format("        return \"{0}.csv\";", tableName));
                    sb.AppendLine("    }");
                    sb.AppendLine(string.Format("    public override void InitModel({0}Model model, Dictionary<string, string> cellMap)", tableName));
                    sb.AppendLine("    {");
                    for (var i = 0; i < headers[0].Count; i++)
                    {
                        sb.AppendLine(string.Format("        /// {0};", headers[2][i]));
                        sb.AppendLine(string.Format("        if (cellMap[\"{0}\"] != null)", headers[0][i]));
                        sb.AppendLine(string.Format(FieldTypeDic[headers[1][i]], headers[0][i], headers[0][i]));
                    }
                    sb.AppendLine("    }");
                    sb.AppendLine("}");

                    sw.Write(sb);
                    sw.Close();
                    fs.Close();
                }
            object arr = new int[3];

            var d = (int[])arr;

            Debug.Log("生成数据模型代码成功:" + tableName);
        }