現有一個附加信息對象AttachedInfo,它裡面分別有Info01、Info02.....Info10一共十個附加信息字段,現在參數傳過來是一個string[]數組,要怎麼才能將這個數組中的元素分別對應到這個對象中的各個字段呢,通過反射就可以實現,即使後期AttachedInfo中的Info字段增加,或者說string[]中的元素個數與AttachedInfo中的Info字段個數不一致也沒關系。
AttachedInfo ai = new AttachedInfo();
//通過反射將AttachedInfo中的屬性映射成一個屬性數組
Reflection.PropertyInfo[] propList = typeof(AttachedInfo).GetProperties();
//遍歷該數組中的屬性
propList.ToList().ForEach(p =>
{
//將Info開頭的屬性全都找出來
if (p.Name.StartsWith("Info"))
{
//因為屬性Info的後兩位都是01、02的數字,因此可以去掉前綴Info,以此來對應string[]數組中的元素索引
int index = Convert.ToInt32(p.Name.TrimStart('I','n','f','o'));
//判斷索引是否超出了string[]數組
if (index <= smr.AttachedInfos.Count())
{
//給每個對象中的字段賦值
p.SetValue(ai, smr.AttachedInfos[index - 1], null);
}
else
{
p.SetValue(ai, null, null);
}
}
});