Visual Basic 2010: перебор свойств со сходным именем? - PullRequest
0 голосов
/ 18 декабря 2011

Я создал простое приложение, в котором я выбираю вопросы из базы данных Access и сохраняю ответы в другой базе данных Access. Я не уверен, сколько вопросов хотел бы задать клиент, поэтому я не могу жестко закодировать этот номер.

Итак, имена столбцов для таблицы ответов (кроме информации о пользователе, такой как имя, фамилия и т. Д.) Будут a1, a2, a3 ... aN.

И, наконец, проблема!

В целях тестирования у меня есть жестко запрограммированные первые 3 ответа, например:

newEntry.a1 = answers(0)
newEntry.a2 = answers(1)
newEntry.a3 = answers(2)

Теперь я хотел бы перебрать все свойства, основываясь на количестве свойств «a-типа»:

'aCount is number of "a-type" properties
For i = 0 To aCount - 1
    Dim property As String
    property = "a" & (i + 1)
    newEntry.property = answers(i)
Next

Конечно, приведенный выше код не работает, это просто идея с псевдокодом, которая «должна» соответствовать моему жестко закодированному примеру.

Можно ли перебирать заранее определенные свойства объекта newEntry таким образом?

Надеюсь, мой вопрос был достаточно ясен. Заранее большое спасибо!

1 Ответ

0 голосов
/ 18 декабря 2011

Да, используется рефлексия, вам лучше использовать коллекцию для хранения ответов.

множество способов сделать это, но

Dictionary<String,List<String>> would be an easy first choice then

PSEUDO Code

for(int index = 0; index<aCount; index++)
{
  newEntries.Add["A"].Add(answers[index]);
}

, поэтому A4 - это просто newEntries ["A"] [3];

...