程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 通過反射將數組中的元素給一個對象中的各個字段賦值

通過反射將數組中的元素給一個對象中的各個字段賦值

編輯:C++入門知識

現有一個附加信息對象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);
}
}
});

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved