Сгенерировать имя переменной с помощью CodeDOM

Всем привет,

Пожалуйста, помогите мне с этим:

У меня есть форма, которая содержит мой пользовательский элемент управления.

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

Мой текущий сериализатор CodeDOM работает следующим образом:

control1.Values.DataSource = new objA();
   control1.CategoryNames.DataSource = new objA();

Как видите, объект objA был создан 2 раза.

Как это решить?

Думаю, я могу объявить переменную, содержащую ссылку на objA, а затем назначить эту переменную двум коллекциям:

    ObjA var = new objA();
    control1.Values.DataSource = var;
   control1.CategoryNames.DataSource = var;

Но я не могу гарантировать, что «var» является уникальным именем. Как я могу автоматически назначить именно то имя, которое Форма дала моему элементу управления (control1, control2 и т. д.)?

Спасибо.


person thethanghn    schedule 18.06.2009    source источник


Ответы (1)


В качестве альтернативы вы можете назвать переменную как guid. Не гарантируется, что он будет уникальным, но очень вероятно, что он будет (особенно если ни одна из других переменных в вашем классе не названа как guids).

Вам нужно будет выполнить некоторую фильтрацию, чтобы сделать его допустимым именем переменной, например, убедиться, что оно начинается с буквы, и удалить тире.

string variableName = "A" + Guid.NewGuid().ToString().Replace("-","");
person Matthew Steeples    schedule 18.06.2009
comment
есть случай, когда имя переменной было объявлено в другом месте, например, если я использую несколько экземпляров пользовательского элемента управления. Мне нужен способ проверить, действительно ли имя переменной можно использовать. Пожалуйста помоги!! - person thethanghn; 18.06.2009
comment
если вы каждый раз регенерируете руководство, то очень мало шансов, что имена будут одинаковыми. - person Matthew Steeples; 18.06.2009