最近遇到一個問題,數據庫里面的數據存了一個多圖字段和一個圖片對應的排序,然后輸出的時候需要按排序處理下。
當然,最容易想到的辦法是遍歷,然后添加,這次不想玩這么低級的代碼,而且類似的需求項目中有好幾個地方都有用到,就想着能不能寫個通用的方法,
於是想到了泛型,寫了下面這么個方法
/// <summary>
/// 將N個數組映射成對象返回用於數據結構化
/// 要求各數組的長度一樣,默認第一個數組的數據會成為對象的第一個屬性的值,以此類推
/// </summary>
/// <typeparam name="T">對象類型</typeparam>
/// <param name="arrs">字符串二維數組</param>
/// <returns></returns>
public static List<T> AssemblingArraysToObject<T>(params string[][] arrs) where T : new()
{
try
{
List<T> objList = new List<T>();
T obj = new T();
PropertyInfo[] properts = obj.GetType().GetProperties();
int arrCount = arrs.Length;
int itemCount = arrs[0].Length;
for (int i = 0; i < itemCount; i++)
{
for (int j = 0; j < arrCount; j++)
{
properts[j].SetValue(obj, arrs[j][i], null);
}
objList.Add(obj);
obj = new T();
}
return objList;
}
catch (Exception)
{
throw new Exception("數據異常");
}
}
使用方法很簡單,如下,以后遇到類似的東西,就可以直接用了,入參也是不定數量的,通用性比較廣
List<Photos> carousels = StringTools.AssemblingArraysToObject<Photos>(photos, orders);// 將兩個數組映射成list
此方法用於數據結構化