Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть следующие типы: Код: c# 1. 2. 3. 4. ModelIds - это enum Вопрос такой: System.Type type = function(x), где function(x) - это функция поиска типа по переданному значению x, где х - одно из значений перечисления ModelIds. Предполагается следующее использование: Код: c# 1. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 02:43 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
ДА! и искомый тип должен реализовывать интерфейс IModel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 02:47 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
ughunter, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Регистрация типов (на примере Autofac): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. усё. т.е. не надо морочиться с резолвом типа, ты можешь получать сразу инстанс нужного типа и регистрировать как именно этот инстанс должен быть создан (любой, сколь угодно сложный алгоритм). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 07:18 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
hVostt, Да инстанс конечно получили. Но ведь как показано тут Repository.FindAsync<type>(id) - нужен не инстанс а сущьность. Функция Repository.IncrementView принимает сущность EF и далее с ней работает. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 08:33 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
сейчас реализовано вот так (не очень хорошо) - нет универсальности. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. т.е. нужно избавитьс от свича ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 09:40 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
ughunterт.е. нужно избавитьс от свича Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. тебе нужно реализовать кастомный атрибут ModelTypeAttribute, в который можно передать тип. затем, имея на руках значение ModelIds, можно через рефлекшен получить вышеуказанный атрибут и извлечь тип. усё. никаких кейсов, никаких словарей и регистраций. типы пробиваешь прямо атрибутами вместе с енумами.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 10:18 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
hVostt, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. -- злится (( что не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 13:57 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
ughunter Код: c# 1. Так нельзя передавать тип. В угловых скобках можно передавать только известный на этапе компиляции тип, а в рантайме нельзя. Тут либо надо через рефлекшен сконструировать метод FindAsync параметризированный типом: Код: c# 1. 2. 3. 4. , либо использовать другой метод репозитория, который принимает одним из параметров тип: Repository.FindAsync(type, id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 20:18 |
|
||
|
Как получить тип?
|
|||
|---|---|---|---|
|
#18+
hVostt, спасибо огромное - ты просто гений! в конце дополню - если кто наткнется на топик )) Код: c# 1. 2. 3. 4. 5. 6. в IncrementView проверка на null - и все взлетело ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 13:25 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=39107391&tid=1356138]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 324ms |

| 0 / 0 |
