![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Riccon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 5.5.2004 Репутация: нет Всего: нет |
Здравствуйте. У меня такоая тема:
из конфиг. файла достаётся переменная N. Мне нужно создать экземпляр класса Q с именем N. Поможите с решением, плз. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
Activator.CreateInstance()
ну и System.Type тоже может понадобиться Это сообщение отредактировал(а) tol05 - 10.10.2007, 19:23 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
никак. Имена переменных должны быть известны на момент компиляции. Как вариант - массив типа
Dictionary <String, // name of instance of Q object Base_Type_for_all_Q_types> -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| tol05 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
Activator.CreateInstance() как раз и возвращает Object, который "Base_Type_for_all_Q_types" -------------------- На хорошей работе и сны хорошие снятся. |
||||||
|
|||||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
tol05, насколько я понял, то что аффтар называет N, в твоем примере называется mc... Если ты знаешь, как создать экземпляр объекта, имя переменной которого определяется при выполнении, скажи как...
Это сообщение отредактировал(а) 1stain - 11.10.2007, 14:17 -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 36 Всего: 170 |
гм... да.. понял... что недопонял
1stain, извини. Ну что ж. Можно попробовать все равно. Сам никогда не делал, но есть прикольные классы в System.CodeDom, System.CodeDom.Compiler Но нужно ли? Riccon, для чего тебе это? -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
||||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
как раз сейчас работаю над проектом, в котором на основе ini файла надо строить дерево классов. Для каждого экземпляра класса в ini есть своя секция, тип класса возвращается фабричным методом, исходя из ее имени. Отражение это конечно круто, но больно бьет по производительности.
В каждом экземпляре есть String св-во Name, которому присваивается также имя секции плюс уникальный числовой идентификатор. -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
1stain, ну сделай класс, одно из полей которого и будет Name, второй SectionName, третье Element (твой класс) либо в самом классе можно завести эти два поля.
В любом случае от переменную с нужным именем толку никакого. Ведь имена нужны для того, чтобы их потом сравнивать. А для имени переменной ты не напишешь SomeIdentifier.GetYourNameNah()... |
|||
|
||||
| Riccon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 5.5.2004 Репутация: нет Всего: нет |
tol05, спасибо за наводку. Вопрос снят.
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |