前言
因為覺得一長排的寫下來實在太醜了,
問了一下社群內的人,有人說可以用map對應,有人說是委任。
最後查出來是這個。但我也不知道這個是哪一種XDDD
正文
首先class長這樣
private class car
{
public DateTime fileDate { get; set; }
public int time { get; set; }
public decimal canID { get; set; }
public int dlc { get; set; }
public int byte0 { get; set; }
public int? byte1 { get; set; }
public int? byte2 { get; set; }
public int? byte3 { get; set; }
public int? byte4 { get; set; }
public int? byte5 { get; set; }
public int? byte6 { get; set; }
public int? byte7 { get; set; }
}
本來長這樣
car.byte0 =valCount > 4? Convert.ToInt32(values[4]):0;
car.byte1 =valCount > 5? Convert.ToInt32(values[5]):0;
car.byte2 =valCount > 6? Convert.ToInt32(values[6]):0;
car.byte3 =valCount > 7? Convert.ToInt32(values[7]):0;
car.byte4 =valCount > 8? Convert.ToInt32(values[8]):0;
car.byte5 =valCount > 9? Convert.ToInt32(values[9]):0;
car.byte6 =valCount > 10? Convert.ToInt32(values[10]):0;
car.byte7 =valCount > 11? Convert.ToInt32(values[11]):0;
改完後變這樣
for (int i = 0; i < 8; i++)
{
if (valCount < i + 3)
break;
string propertyName = "byte" + i;
car.GetType().GetProperty(propertyName).SetValue(car,Convert.ToInt32(values[i+4]));
}
使用GetType().GetProperty的方式去取得欄位。
ref.
Get property value from string using reflection
0 意見:
張貼留言