|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите вариант реализации. Есть экземпляр(object). Надо проверить, наследуется ли он от интерфейса IMyCollection<T>, и если наследуется, то привести его к данному типу. Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 10:59 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Непонятно, что требуется. Чтобы привести тип к интерфейсу IMyCollection<T> этот T должен быть где-то объявлен Он не может быть получен динамически на этапе выполнения программы, так как параметры типов должны быть известны на этапе компиляции. Отсюда и пляшите. У вас что-то с архитектурой странное. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 11:28 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
в заданном примере потребность в рефлексии не нужна, зачем вы её используйте? скорее всего автору нужен ковариантный интерфейс и речь об этом. Гугл в помощь https://metanit.com/sharp/tutorial/3.27.php и полно другой информации. Крайне полезная вещь, но не всегда применима и требует качественной проработки всей иерархии наследования интерфейсов ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 11:52 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Shocker.ProНепонятно, что требуется. Чтобы привести тип к интерфейсу IMyCollection<T> этот T должен быть где-то объявлен Он не может быть получен динамически на этапе выполнения программы, так как параметры типов должны быть известны на этапе компиляции. Отсюда и пляшите. У вас что-то с архитектурой странное. Спасибо. Придется искать другое решение ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:10 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
saxixПридется искать другое решениеопишите задачу, может подскажем ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:11 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Shocker.ProsaxixПридется искать другое решениеопишите задачу, может подскажем Задача была связать DataGrid.SelectedItems (View) с таким же свойством во ViewModel (класс наследуется от интерфейса с дженериком). Решил написать универсальный метод, пошел по этому пути. Предполагал о том, что написал Shocker.Pro, но, на всякий случай, спросил. Задачу можно решить и другими путями, просто интересно было "добить" данным способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:16 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
saxixShocker.Proпропущено... опишите задачу, может подскажем Задача была связать DataGrid.SelectedItems (View) с таким же свойством во ViewModel (класс наследуется от интерфейса с дженериком). Решил написать универсальный метод, пошел по этому пути. Предполагал о том, что написал Shocker.Pro, но, на всякий случай, спросил. Задачу можно решить и другими путями, просто интересно было "добить" данным способом. Например, вот так https://social.msdn.microsoft.com/Forums/en-US/5041c158-e48b-4efd-9f73-848a85abba83/datagrid-selecteditems-in-mvvm?forum=wpf ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:17 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
WPF не очень-то заточен на работу с дженериками ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:35 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Надо вязать на IEnumerable, а потом Cast или OfType в самой модели ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:36 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Shocker.ProНадо вязать на IEnumerable, а потом Cast или OfType в самой модели Так тип дженерика заранее не известен. Если только сделать чтобы во всех требуемых ViewModel дженерик наследовался от одного и того же типа ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:40 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
saxixShocker.ProНадо вязать на IEnumerable, а потом Cast или OfType в самой модели Так тип дженерика заранее не известен. Если только сделать чтобы во всех требуемых ViewModel дженерик наследовался от одного и того же типа Тоже не сработает ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:44 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
saxixТак тип дженерика заранее не известен.А я и не говорю про дженерик. Просто к IEnumerable ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:51 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
saxix, Не совсем представляю, как это возможно даже теоретически. Как можно проверить наследование от IMyCollection<T>, если Вы не знаете T ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 12:55 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
AddxКак можно проверить наследование от IMyCollection<T>, если Вы не знаете T ?Для новичка всё можно )). Как только осознаёшь, что в рантайме не бывает IMyCollection<T>, так сразу всё встает на свои места. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 13:04 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Addx, IMyCollection<out T> будет "наследовать" и IMyCollection<MyClass>, и IMyCollection<object> и все прочие классы которые наследовал MyClass ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 13:06 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Addxsaxix, Не совсем представляю, как это возможно даже теоретически. Как можно проверить наследование от IMyCollection<T>, если Вы не знаете T ? Не IMyCollection<T>, а IMyCollection<> ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 13:07 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Roman MejtesIMyCollection<out T>Проблема в том, что внутри интерфейса List<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 13:16 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Shocker.ProRoman MejtesIMyCollection<out T>Проблема в том, что внутри интерфейса List<T> значит нужно его переделать :D ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 13:35 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
вот пример с List<T>, всё работает, только чего хочет автор я так и не понял Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 14:43 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
saxixAddxsaxix, Не совсем представляю, как это возможно даже теоретически. Как можно проверить наследование от IMyCollection<T>, если Вы не знаете T ? Не IMyCollection<T>, а IMyCollection<> Что это за тип IMyCollection<> ? Я такого не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 15:38 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
AddxЧто это за тип IMyCollection<> ? Я такого не знаю.Гугли "незакрытый обобщенный тип" )) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 15:45 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Shocker.ProГугли "незакрытый обобщенный тип" )) Не могу серьезно относится к людям, которые пишут "гугли ..." Я могу нагуглить, что Земля плоская, и что? Приведите объявление такого типа, и сможем его обсудить. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 15:54 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
AddxНе могу серьезно относится к людям, которые пишут "гугли ..." Я могу нагуглить, что Земля плоская, и что? Приведите объявление такого типа, и сможем его обсудить.Не могу серьезно относиться к людям, которые не прочитав про основы, даже после отсылки к ним, продолжают умничать ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 16:01 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Shocker.ProНе могу серьезно относиться к людям, которые не прочитав про основы, даже после отсылки к ним, продолжают умничать Вы не в состоянии привести простой пример, а уже пытаетесь умничать. Если человек делает отсылки к книгам, и уж тем более, к помойке, которая называется инетом, то это означает, что сам он ничего не понимает. Он начинает увиливать, ерничать, играть словами вместо приведения простого примера в 2 строчки. Вам не лень писать длинные посты, но трудно написать простейший пример - самому не смешно? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 16:37 |
|
Вопрос по рефлексии
|
|||
---|---|---|---|
#18+
Пример написан в виде кода в самом первом посте этого топика. Какой еще нужен пример? Если ты никогда не видел пример незакрытого обобщенного типа, это не значит, что их не существует. Как именно разобраться в этом вопросе я подсказку дал. Ты просто, видимо, не работал с рефлексией. ЗЫ: Интересно, что ты скажешь, когда увидишь подобную запись: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2018, 17:02 |
|
|
start [/forum/topic.php?fid=20&fpage=26&tid=1399174]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 160ms |
0 / 0 |