public void LoadsPristineStandardExampleCsvFile() { // Act var result = _target.LoadCsvFile(_path + "PristineStandardExample.csv"); // Assert Assert.That(result.Count, Is.EqualTo(12)); }
/// <summary> /// 读取CSV文件数据(利用反射) /// </summary> /// <typeparam name="CsvData">CSV数据对象的类型</typeparam> /// <param name="csvFilePath">CSV文件路径</param> /// <param name="csvDatas">用于缓存数据的字典</param> /// <returns>CSV文件所有行内容的数据对象</returns> private static Dictionary <int, T_CsvData> LoadCsvData <T_CsvData>(string csvFilePath) { Dictionary <int, T_CsvData> dic = new Dictionary <int, T_CsvData>(); /* 从CSV文件读取数据 */ Dictionary <string, Dictionary <string, string> > result = CsvLoader.LoadCsvFile(csvFilePath); /* 遍历每一行数据 */ foreach (string ID in result.Keys) { /* CSV的一行数据 */ Dictionary <string, string> datas = result[ID]; /* 读取Csv数据对象的属性 */ PropertyInfo[] props = typeof(T_CsvData).GetProperties(); /* 使用反射,将CSV文件的数据赋值给CSV数据对象的相应字段,要求CSV文件的字段名和CSV数据对象的字段名完全相同 */ T_CsvData obj = Activator.CreateInstance <T_CsvData>(); foreach (PropertyInfo p in props) { ReflectUtil.PiSetValue <T_CsvData>(datas[p.Name], p, obj); } /* 按ID-数据的形式存储 */ dic[Convert.ToInt32(ID)] = obj; } return(dic); }