|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Код: c# 1.
Как через Reflection получить TypeInfo Bar? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 00:28 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Код: c# 1.
за последнее свойство не уверен в правильности применения, но в данном случае оно typeof(Bar) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 00:42 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Ну гуглится же моментально: https://stackoverflow.com/questions/5432822/reflection-over-type-constraints . Или тебя гугл сразу на скуль редиректит? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 00:45 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
fkthis Ну гуглится же моментально: https://stackoverflow.com/questions/5432822/reflection-over-type-constraints . Или тебя гугл сразу на скуль редиректит? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 11:08 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Задача усложняется. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Итог: Внутреннее исключение 1: InvalidOperationException: Операции позднего связывания не могут быть выполнены для типов или методов, для которых значение ContainsGenericParameters является true. Как-нибудь можно это обойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 11:35 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Antonariy Задача усложняется. Ты откуда MethodInfo берешь? Потому что вот так вот: Код: c# 1. 2. 3. 4.
все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 12:39 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Я тупанул, в качестве obj передал тип, а не экземпляр типа. Однако, результат все равно тот же самый. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 13:23 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Antonariy Я тупанул, в качестве obj передал тип, а не экземпляр типа. Однако, результат все равно тот же самый. Я-таки еще раз вопрошаю - как ты получаешь MethodInfo? Потому что у меня очень сильное, почти на уровне уверенности подозрение, что у тебя там что-то типа: Код: c# 1.
вместо Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 16:18 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Мимо. Я получаю класс из assembly по имени но у меня там не класс<тип>, а просто класс, не generic. Но у него generic-методы указанного выше вида. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 21:10 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
fkthis Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 21:13 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Вот так я всё получаю, если сильно интересно: Код: c# 1. 2.
Но это ничем не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 21:16 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
У List.Add, к слову, аргумент не generic, поэтому работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 21:19 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Antonariy У List.Add, к слову, аргумент не generic, поэтому работает. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Идея понятна? Ты когда ищешь MethodInfo по имени, то получаешь Generic Definition метода. А чтобы получить метод который можно вызвать тебе нужно для него сделать MakeGenericMethod с нужным типом (типами) данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2020, 21:44 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
fkthis Идея понятна? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 00:19 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Antonariy, А какая задача? Может через экспрешены можно решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 00:41 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
hVostt Может через экспрешены можно решить? Expressions vs Reflection это, обычно, только для оптимизации. Если у тебя Late Binding и известны тольько имена типов/методов в виде строковых переменных, то reflection все равно будет нужен, чтобы построить этот expression. От expression толк в том, что потом уже не надо при каждом вызове делать медленную рефлексию. В доекспрессионные времена для этого использовался Emit ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 10:48 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
Всё получилось. hVostt Antonariy, А какая задача? Может через экспрешены можно решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 12:30 |
|
Получить тип generic-ограничения
|
|||
---|---|---|---|
#18+
fkthat Expressions vs Reflection это, обычно, только для оптимизации. Ну дык о чём и речь :) Экспрешены компилятся в рантайме, а дальше работают как обычные код, плюс какой-никакой тайпчекинг на уровне компиляции. Где-то для оптимизации, а где-то для трансляции дерева выражений во что-нибудь другое (т.е. вовсе не для оптимизации, а для решения конкретной задачи). fkthat Если у тебя Late Binding и известны тольько имена типов/методов в виде строковых переменных, то reflection все равно будет нужен, чтобы построить этот expression. Всё верно, но только один раз :) fkthat В доекспрессионные времена для этого использовался Emit Да и сейчас в некоторых задачах может иметь смысл :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2020, 18:18 |
|
|
start [/forum/topic.php?fid=20&msg=40013850&tid=1398443]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 167ms |
0 / 0 |