![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| nucer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 21.6.2004 Где: Москва Репутация: нет Всего: 0 |
Возникла такая проблема...
Есть класс, в нём есть переменная X, которая изначально была типа Y, но преобразована в Object. Тип Y записан в переменной Z типа System::Type. Так вот, мне надо как то преобразовать из Object в Y. И надо именно динамически... То есть просто написать (String*/DateTime*/...)X (к примеру) я не могу, потому что не знаю какой тип нужен, это записано в переменной.[s] P.S. пишу в 4 часа ночи, так что извиняйте если бред... )) |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Попробуй покопать в сторону System.ComponentModel.TypeConverter. Может быть, это поможет.
Хотя я думаю, что поскольку C++ (так же как и C#) - это строго-типизированный язык, и если у тебя метод принимает string, то object ему никак не передашь - надо приводить к нужному типу. Я так думаю, единственный метод - это объявлять параметры как object. Это сообщение отредактировал(а) arilou - 31.12.2004, 15:25 |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
-------------------- |
|||
|
||||
| nucer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 21.6.2004 Где: Москва Репутация: нет Всего: 0 |
Domestic Cat спасибо, это уже ближе )) Но это всё-таки не совсем динамически... Можно написать множество if'ов, но всё равно я не могу предвидеть какие классы туда будут запихиваться. Ведь не только стандартные классы, а ещё и мои собственные (или не мои даже))...
|
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
А так ли уж нужно такое преобразование типов?
Как я все это понимаю: 1) Существует переменная, тип к-й преобразован из типа Y в тип Object; 2) Заранее неизвестен тип переменной, однако нам требуется с ней работать; 3) Исходя их того, что мы не знаем, что скрывается под типом Y, мы можем вызывать лишь самые "общие" методы, к-е есть у некоторого множества классов. Возникет вопрос - нафига нам тогда обратное преобразование? Ведь можно использовать рефлексию. Что-то типа:
Разве мы не получим ту же функциональность? Мы вызываем методы класса Y, не преобразовывая Object в Y. .. Или я что-то не так понял? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| nucer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 21.6.2004 Где: Москва Репутация: нет Всего: 0 |
Нет, вообще то я хотел в дальнейшем передавать объект X в некую перегруженную функцию не как Object, а как тип Y... Уже сомневаюсь, возможно ли такое...
|
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Ох, ну в таком случае приходит на ум лишь вариант Domestic Cat'a..
-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| nucer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 21.6.2004 Где: Москва Репутация: нет Всего: 0 |
Я так подумал... не буду я идти по пути который мне пришёл в голову в несколько часов ночи ))
Сделал нормально |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |