![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
SLeN |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
К примеру имеется простейший врапер для string
Соответственно проходит на ура:
Но после упаковки в Object
Вываливает Exception: System.InvalidCastException : Unable to cast object of type 'SimpleWrapperCast.SimpleWrapper' to type 'System.String' Как можно реализовать такую функциональность??? --------------------
Православные не проходите мимо! Люди нуждаются в вас |
||||||
|
|||||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
aа так?
|
|||
|
||||
SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
kobra, в таком случае клиентский код должен знать что он работает с врапером, чего не хотелось бы.
--------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
nmn |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 593 Регистрация: 26.11.2005 Репутация: 1 Всего: 1 |
попробуй заменить на implicit, хотя это вряд ли поможет, в c# строгая типизация, тип содержащийся в object должнен соответствовать приводимому типу или быть его наследником Это сообщение отредактировал(а) nmn - 21.2.2010, 17:11 |
|||
|
||||
SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
nmn, implicit к сожалению не поможет, честно говоря я вобще ни вижу ни одного способа приведения из object, кроме как использовать прокси класс (на подобии NHibernate'овского), но тот же стринг - закрытый класс и такая штука не пройдет.
По тому и создал тему на форуме надеясь на русский авось ![]() --------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
kobra |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
а как на счет рефлексии?
|
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Если нужен именно string, то можно просто переопределить ToString для твоего враппера.
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
kobra, не уловил сути идеи
KelTron, нет в данном случае это не поможет, после упаковки в object вывалится тоже исключение p.s.: KelTron, тугодумлю вечером, ты предлагаешь в клиентском коде .ToString() использовать, а не приведение, но в данном случае опять таки клиентский код должен знать что работает с враппером - что не желательно. Это сообщение отредактировал(а) SLeN - 24.2.2010, 19:57 --------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Я имел в виду:
Но это только для строк... -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
Именно этот вариант я и отметил в постскриптуме.
--------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Ну когда я писал его ещё не было..) Почему? Там нигде нет приведения к SimpleWrapper. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
По тому что от потребителя будет требоваться явно вызвать ToString()
К примеру если потребитель - NHibernate, он ToString() вызывать не будет, просто попытается привести к String. --------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Единственный вариант реализации который я вижу:
Но это прокатило бы если бы ты мог изменить класс object, т.к. это невозможно, значит и такое поведение не реализовать... -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
||||
|
||||
SLeN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 8.12.2006 Где: SPB Репутация: 2 Всего: 4 |
mrbrooks, к сожалению расширения так же не решают поставленной задачи, клиентский код должен будет делать явные вызовы.
Я полагаю что задача не решаема. --------------------
Православные не проходите мимо! Люди нуждаются в вас |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |