2010-01-09 2 views
0

У меня есть класс Linq2SQL с полями WeekEnding1 WeekEnding2 WeekEnding3 WeekEnding4Linq2Sql со ссылкой на колонку объекта по переменному созданию

Я хочу написать несколько C#, используя поля в циклю.

Возьмите это, например:

for(int i=1; i<=4; i++) 
{ 
    Msgbox(myClass.WeekEnding + i) 
} 

Я понимаю, что не будет работать, но что будет ??

Malcolm

ответ

0

Если вы не хотите, чтобы во что-то с отражением, это:

MsgBox(myClass.WeekEnding1); 
MsgBox(myClass.WeekEnding2); 
MsgBox(myClass.WeekEnding3); 
MsgBox(myClass.WeekEnding4); 

Вы можете делать то, что вы пытаетесь сделать с отражением, помещая это внутри цикла:

PropertyInfo info myClass.GetType() 
    .GetProperty("WeekEnding" + i.ToString(), 
     BindingFlags.Public | BindingFlags.Instance); 
MsgBox(info.GetValue(myClass, null)); 

Но я бы рекомендовал первый подход! Второй подход должен будет найти свойство, о котором идет речь, на каждом проходе через цикл, добавив значительные накладные расходы.

В любом случае, ваша базовая модель данных звучит очень похоже на ее нормализацию - это общий плохой запах!

Смежные вопросы