現在、クラスオブジェクトのすべての値を設定していますRecord
。
これは、現在プロパティごとにレコードを入力するために使用しているコードです。
// Loop through each field in the result set
for (int i = 0; i <= resultItems.Length; i++)
{
Record newRecord = new Record()
{
itemtype = resultItems[i - (fieldCount - 0)],
itemdesc = resultItems[i - (fieldCount - 1)],
prodcode = resultItems[i - (fieldCount - 2)],
proddesc = resultItems[i - (fieldCount - 3)],
curstat = resultItems[i - (fieldCount -4)],
totfree = resultItems[i - (fieldCount -5)],
totphys = resultItems[i - (fieldCount -6)],
pcolgroup = resultItems[i - (fieldCount -7)],
scolgroup = resultItems[i - (fieldCount -8)],
totpo = resultItems[i - (fieldCount - 9)],
totso = resultItems[i - (fieldCount - 10)],
quality = resultItems[i - (fieldCount - 11)],
statusdesc = resultItems[i - (fieldCount - 12)],
groupcode = resultItems[i - (fieldCount - 13)],
qualitydes = resultItems[i - (fieldCount - 14)],
pcoldesc = resultItems[i - (fieldCount - 15)],
scoldesc = resultItems[i - (fieldCount - 16)],
pgroupdesc = resultItems[i - (fieldCount - 17)],
};
}
すべてのプロパティ名をハードコーディングせずに、各プロパティを動的に反復処理できますか?
次のようなものです:
// Create new Record instance
Record newRecord = new Record();
for (int e = 0; e < propertyCount.Length - 1; e++)
{
newRecord[fieldname] = resultItems[i - (fieldCount - e)];
}
ベストアンサー1
リフレクションを使ってこれを行うこともできます。私が理解している限りでは、クラスのプロパティを列挙して値を設定できます。ただし、これを試してみて、プロパティの順序を理解していることを確認する必要があります。これを参照してください。MSDN ドキュメントこのアプローチの詳細については、こちらをご覧ください。
ヒントとしては、次のようなことが考えられます。
Record record = new Record();
PropertyInfo[] properties = typeof(Record).GetProperties();
foreach (PropertyInfo property in properties)
{
property.SetValue(record, value);
}
value
書き込みたい値はどこにありますか (つまり、resultItems
配列から)。