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); }); }
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); }