Создать имя объекта из строки - PullRequest
2 голосов
/ 09 апреля 2009

Скажем, я хочу перебрать устройство чтения данных и создать загрузку объектов определенного типа, но с использованием значения из устройства чтения данных в качестве имени объекта, например,

String "string_" + <value from datareader> = new String();

Так что, если бы у меня были данные temp1, temp2 и temp3, выходящие из устройства чтения данных, у меня было бы 3 новых объекта типа string, например

string_temp1
string_temp2
string_temp3

Как я могу создать объекты с именем из хранилища данных? Или есть какие-нибудь предложения по лучшему способу сделать это?

Ответы [ 2 ]

11 голосов
/ 09 апреля 2009

Вместо того, чтобы использовать отражение, я думаю, что было бы проще использовать Dictionary, который отображает имена, которые вы хотите, чтобы объекты имели, к их значениям:

var map = new Dictionary<String, String>();
map[...] = new String();
//   ^
//   |
//   +---- substitute with whatever naming scheme you deem suitable
2 голосов
/ 09 апреля 2009

Было бы мало пользы в этом. Если вы создадите переменную NAME из значения, после этого не будет никакого способа сослаться на эту переменную в вашем коде, поскольку код компилируется во время компиляции, и вы пытаетесь установить имена переменных во время выполнения.

Помните, что имена переменных на самом деле просто для того, чтобы компилятор мог отображать в IL и, в конечном итоге, правильно JIT. Вот почему обфускация работает - одна из главных вещей, которую делает большинство обфускаторов, - это скремблировать все ваши имена переменных в очень короткие, бессмысленные имена. Это не влияет на поведение во время выполнения - имена не имеют смысла после компиляции.

Я бы рекомендовал придерживаться подхода Джона Феминеллы или чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...