Esempio n. 1
0
    public static IEnumerator ParseAndInitCsvData(string rel_pathname)
    {
        string type_name  = GetCsvTypeName(rel_pathname);
        var    list_filed = typeof(DB).GetField(type_name + "List");
        var    map_field  = typeof(DB).GetField(type_name + "Map");

        IList data_list = null;

        if (list_filed != null)
        {
            data_list = list_filed.GetValue(null) as IList;
            var data_type = Type.GetType("Entity." + type_name);
            data_list.Clear();
            //yield return Sta
            var t = Task.Run(async() => {
                await CsvUtils.DeserializeAsync(CsvHelper.AnalysisCsvListByFile(rel_pathname)
                                                , "Entity." + type_name, data_type, data_list);
            });
            while (!t.IsCompleted)
            {
                yield return(10);
            }
            if (map_field != null)
            {
                var map = map_field.GetValue(null) as IDictionary;
                map.Clear();
                var id_fileLd = data_type.GetField("id");
                if (id_fileLd != null)
                {
                    if (id_fileLd != null)
                    {
                        if (data_list.Count == 0)
                        {
                            Debug.LogError($"{rel_pathname}表数据为0");
                        }
                        for (var i = 0; i < data_list.Count; ++i)
                        {
                            var ele = data_list[i];
                            var id  = (int)id_fileLd.GetValue(ele);
                            map.Add(id, ele);
                        }
                    }
                    else
                    {
                        Debug.LogError($"{rel_pathname}表找不到id字段");
                    }
                }
            }
        }
        Test();
    }