/// <summary> /// Generates the data list. /// </summary> /// <param name="table">The table.</param> /// <param name="className">Name of the class.</param> /// <param name="headInfos">The MetadataHeadInfo list.</param> /// <returns></returns> private static List <ConfigMetadata> GenerateDataList(DataTable table, string className, List <MetadataHeadInfo> headInfos) { List <ConfigMetadata> dataList = new List <ConfigMetadata>(); int rowCount = table.Rows.Count; for (int i = DefaultDataStartRowIndex; i < rowCount; ++i) { ConfigMetadata metadata = (ConfigMetadata)ReflectionUtility.CreateClassInstance(GetMetadataFullName(className)); for (int j = 0, keysCount = headInfos.Count; j < keysCount; ++j) { string cellValue = table.Rows[i][j].ToString().Trim(); MetadataHeadInfo headInfo = headInfos[j]; // The value of primary key can not be null or empty string. if (headInfo.key == primaryKey && string.IsNullOrEmpty(cellValue)) { continue; } ITypeParser parser = GetTypeParser(headInfo.type); if (parser != null && !string.IsNullOrEmpty(cellValue)) { object value = parser.ParseValue(cellValue); ReflectionUtility.SetObjectFieldValue(metadata, headInfo.key, value); } } dataList.Add(metadata); } return(dataList); }