85 / 12 / 1
Регистрация: 24.05.2010
Сообщений: 590
|
||||||
1 | ||||||
.NET 4.x Как привести к строгому типу не зная заранее имя типа?11.09.2017, 17:46. Показов 1423. Ответов 5
Метки нет Все метки)
(
Привет!
Есть такой код:
0
|
|
11.09.2017, 17:46 | |
Ответы с готовыми решениями:
5
Как привести переменную типа Object к типу Double? Как привести объект базового типа к унаследованному типу
Как узнать полное имя файла зная его краткое имя? |
3279 / 2324 / 661
Регистрация: 02.08.2011
Сообщений: 6,367
|
|
11.09.2017, 17:54 | 2 |
Переменная instance уже хранит ссылку на объект вашего типа MyClass. Ее и передавайте.
0
|
![]() 11732 / 8058 / 1229
Регистрация: 21.01.2016
Сообщений: 30,347
|
|
11.09.2017, 18:43 | 3 |
Использовать приведение типа? Только тут один нюанс есть: вы должны заранее (в коде) знать с каким типом работаете. Если вы всегда ожидаете один и тот же тип, то рефлексия тут не нужна. Если типи могут быть разными, то нужно будет в коде же прописать все сопоставления (какой объект какого типа куда передавать).
1
|
1272 / 973 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
11.09.2017, 22:03 | 4 |
вместо ручных сопоставлений можно доверить это перегруженным методам и приведению к dynamic
foo((dynamic)instance ); и нужное количество методов типа void foo(myclass obj){} void foo(youclass obj){} void foo(badclass obj){}
2
|
85 / 12 / 1
Регистрация: 24.05.2010
Сообщений: 590
|
|
13.09.2017, 10:48 [ТС] | 5 |
IamRain, так, к сожалению, не работает, т.к. вызываемый метод ожидает не object, а конкретный тип и компилятор на это дело ругается.
Usaga, я ещё пример упростил когда писал и не придал значения изначально тому, что на самом деле у меня классы идут с уточнением типов (MyClass<T>) и вот привести нужно с учетом T, которое тоже неизвестно. Поэтому, наверное, придется делать, как вы сказали. Спасибо за ответ! m0nax, ух ты! В принципе, это, наверное то, что я хотел. Но ввиду того, что заранее неизвестно не имя класса, не тип, который его уточняет, получается, что будет дофига перегрузок и в случае добавления нового типа или уточнения типа нужно все равно лезть в код и писать нужную перегрузку, а именно от этого хотел уйти. Но это уже проблема проектирования самой программы. А так то это то, что было нужно. Спасибо за ответ! В общем, хотел сделать универсально, но, наверное, буду руками описывать соответствия конкретных типов, потому что универсально все равно не получится, а описание соответствия руками будет, наверное, более понятно при чтении и сопровождении кода. Всем спасибо за ответы!
0
|
![]() 11732 / 8058 / 1229
Регистрация: 21.01.2016
Сообщений: 30,347
|
|
13.09.2017, 11:26 | 6 |
V0fka, не исключено, что имеет место плохая архитектура программы и вполне можно обойтись без подобных выкрутасов с рефлексией.
0
|
13.09.2017, 11:26 | |
Помогаю со студенческими работами здесь
6
Как привести к типу во время присвоения? Как привести к нужному мне типу Как привести переменную к нужному типу? Как привести переменную к типу long?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |