//--------------------------------------------------------------------- public Prop <T> defProp <T>(Dictionary <string, string> map_param, string key, T default_value, bool collect_dirty = true) { PropDef prop_def = new PropDef(key, typeof(T), collect_dirty); mMapPropDef[prop_def.getKey()] = prop_def; Prop <T> prop = new Prop <T>(this, prop_def, default_value); mMapProp[prop_def.getKey()] = prop; if (map_param == null) { return(prop); } string json = null; if (map_param.TryGetValue(prop_def.getKey(), out json)) { if (!string.IsNullOrEmpty(json)) { prop.set(EbTool.jsonDeserialize <T>(json)); } } return(prop); }
//--------------------------------------------------------------------- public PropDef getPropDef(string prop_name) { PropDef prop_def = null; mMapPropDef.TryGetValue(prop_name, out prop_def); return(prop_def); }
//----------------------------------------------------------------------------- public static void setProp <T>(Dictionary <string, IProp> map_prop, string key, T value, bool collect_dirty = true) { IProp p = null; map_prop.TryGetValue(key, out p); if (p == null) { PropDef prop_def = new PropDef(key, typeof(T), collect_dirty); Prop <T> prop = new Prop <T>(null, prop_def, value); map_prop[prop.getKey()] = prop; } else { p.setValue(value); } }
//--------------------------------------------------------------------- void _loadTable(string table_name) { string str_query_select = string.Format("SELECT * FROM {0};", table_name); Dictionary <int, List <DataInfo> > map_data = Sqlite.getTableData(str_query_select); if (map_data.Count <= 0) { return; } EbTable table = new EbTable(); table.Name = table_name; foreach (var i in map_data) { EbPropSet prop_set = new EbPropSet(); int data_id = i.Key; List <DataInfo> list_data_info = i.Value; foreach (var data_info in list_data_info) { object data_value = data_info.data_value; string data_name = data_info.data_name; switch (data_info.data_type) { case 1: { PropDef prop_def = table.getPropDef(data_name); if (prop_def == null) { PropDef d = new PropDef(data_name, typeof(int), false); table._addPropDef(d); } Prop <int> prop = new Prop <int>(null, prop_def, 0); prop.set((int)data_value); prop_set._addProp(data_name, prop); } break; case 2: { PropDef prop_def = table.getPropDef(data_name); if (prop_def == null) { PropDef d = new PropDef(data_name, typeof(float), false); table._addPropDef(d); } Prop <float> prop = new Prop <float>(null, prop_def, 0f); prop.set(((float)(double)data_value)); prop_set._addProp(data_name, prop); } break; case 3: { PropDef prop_def = table.getPropDef(data_name); if (prop_def == null) { PropDef d = new PropDef(data_name, typeof(string), false); table._addPropDef(d); } Prop <string> prop = new Prop <string>(null, prop_def, ""); prop.set((string)data_value); prop_set._addProp(data_name, prop); } break; } } IProp prop_id = prop_set.getProp("Id"); if (prop_id == null) { EbLog.Error("EbDataMgr._loadTable() Error! Key=Id not exist, TableName=" + table_name); continue; } Prop <int> p = (Prop <int>)prop_id; prop_set.Id = data_id; table._addPropSet(prop_set); } Db._addTable(table); }
//----------------------------------------------------------------------------- public IProp(PropDef prop_def) { mPropDef = prop_def; }
//----------------------------------------------------------------------------- public Prop(ComponentDef component_def, PropDef prop_def, T default_value) : base(prop_def) { mComponentDef = component_def; mValue = default_value; }
//--------------------------------------------------------------------- internal void _addPropDef(PropDef prop_def) { mMapPropDef[prop_def.getKey()] = prop_def; }