|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Можно ли как-то сделать вот такое?: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 09:47 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Нет, конечно. Во-первых, для обобщенных методов параметр типа должен быть известен на этапе компиляции, а не в процессе выполнения. Во вторых, есть необобщенный DbContext.Set, в данном случае будет data = _myDbContext.Set(objectType) Но для того, чтобы дальше с ним работать, например с Id, его надо привести к походящему интерфейсу, например Код: c# 1. 2. 3. 4.
и пусть нужные сущности его наследуют ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 10:14 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Все так определен контекст и метод в самом контексте: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Как тогда убрать вот такой кейс?: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 10:20 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Я написал выше, мне нечего добавить. Используй Set(Type) вместо Set<T>() Сущности объяви с интерфейсом IHasId ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 11:19 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, А смысл городить еще один интерфейс, если можно написать так: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 13:06 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
PavluhaА смысл городить еще один интерфейсну ты ведь в своем свиче так не написал. Кроме того, интерфейс может понадобиться не только для поиска одного объекта по id И параметр типа ты все равно не можешь задать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 13:30 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Мне важно понять, можно как-то получить вот это Код: c# 1.
Потому что у меня более 30 объектов и придется писать огромный switch. Не хочется ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 14:16 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Pavluhaможно как-то получить вот этоЭТО получить нельзя, я ответил еще в первом сообщении. Но вот твою задачу можно решить иначе. В том числе можно динамически состряпать Expression для отбора по Id. Но интерфейс проще и удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 14:32 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Возможно я не так описал задачу. У меня есть очень много объектов, для которых необходимо выполнить стандартный набор команд, как мне кажется, это можно сделать через Generic. Список команд 1. Получение списка идентификаторов объекта 2. Получение объекта по идентификатору Список сущностей за 30. Писать тупой switch на все объекты жесткачь На входе каждого метода приходит тип запрашиваемого объекта. Вот я и подумал, что было бы клево как-то свести все к такому: Код: c# 1. 2.
Отсюда вопрос, как бы извернуться, чтобы такое сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 14:40 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, А какой вариант есть альтернативный? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 14:44 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Блин, ты не понимаешь. Ни через свич, ни каким либо другим способом ты не сможешь использовать дженерик для динамически создаваемого типа. По определению. А коль ты заранее (при компиляции) не можешь знать, какого типа будет переменная, ты не можешь эту переменную и объявить. Поэтому Pavluha2. Получение объекта по идентификаторуты можешь получишь этот объект, но это будет либо object, либо более узкий тип, определенный интерфейсами, но никак не конкретный, ибо, повторю, заранее ты этот тип не знаешь. Определись с тем, что ты собираешься делать дальше с результатами выполнения этих методов: Pavluha1. Получение списка идентификаторов объекта 2. Получение объекта по идентификатору ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 14:56 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Отдавать клиенту ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 14:59 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
ну и отдавай ему object ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 15:01 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Я же написал, что проблема в множественном кейсе. У меня все работает, просто не нравится такое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и такое Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 15:17 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Опять за рыбу деньги. Не нравится свич - используй DbContext.Set(Type) вместо DbContext.Set<T>() ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 16:11 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Да, спасибо этот вариант работает. Очень компактно получилось. У меня теперь другой вопрос. Вы упомянули об общем интерфейсе IHasID. Я немного не пойму, как его мне использовать. В самой сущности я сделал приведение Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вопрос вот какой. Как это использовать вот тут и написать компактно: Код: c# 1.
Как теперь вытащить список идентификаторов данной сущности? Использую свойство интерфейса IHasID ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 17:19 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Как это заменить на что-то обобщенное: Код: c# 1.
Эту часть я получил _dbContext.Set<ActionProcess>() -> _dbContext.Set(Type.GetType("Type." + type.ToString() + ", Assembly", true)); Как теперь сделать Select? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 17:24 |
|
Можно ли такое сделать?
|
|||
---|---|---|---|
#18+
Сделал так: Код: c# 1. 2. 3.
Вопрос, это не трэш? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2015, 17:43 |
|
|
start [/forum/topic.php?fid=17&msg=39084824&tid=1349481]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 234ms |
0 / 0 |