|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Всем привет. Подскажите, плиз, можно ли как-то реализовать нечто подобное: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 22:12 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Вопрос не очень понятен (а, точнее, отсутствует напрочь). Если хрустальный шар не врет, вам нужно что-то типа Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 22:32 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Shocker.Pro, Да, спасибо, работает. А как правильно называется тема, чтоб почитать более подробно? Универсальные классы? Шаблоны? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2016, 23:15 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Generic types, универсальные типы, обобщенные типы (в разных переводах), дженерики (жаргон) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 00:01 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Shocker.Pro, + generic type constraint (Ограничения параметров типа) p.s. есть еще отличное ограничение where T : new, указывающее на то, что класс должен иметь конструктор по умолчанию, а вот задать ограничения на более сложный конструктор нельзя и это печально ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 09:42 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Ну, если уж на то пошло, возможно, если автору нужно просто несколько своих методов для обработки листа, достаточно будет просто сделать несколько методов расширения на IList<BaseItem>, а не городить кучу своих классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 11:48 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Shocker.ProНу, если уж на то пошло, возможно, если автору нужно просто несколько своих методов для обработки листа, достаточно будет просто сделать несколько методов расширения на IList<BaseItem>, а не городить кучу своих классов. Много классов, потому что сущности разные. Каждая сущность - отдельный класс. Каждый список тоже отдельный класс в котором есть набор специфичных методов. Но есть методы, которые идентичны для всех классов-списков, поэтому такие методы хотелось вынести в базовый класс. Если можно, подскажите, пожалуйста, еще один момент. Допустим есть BaseEditor - базовый класс редактора списков и в нем объявлен объект базового класса списков: Код: c# 1.
Допустим у BaseEditor есть наследник для работы с Item1List: Код: c# 1.
Создаем экземпляр EditorForItem1List и передаем ему ранее созданный и заполненный экземпляр Item1List: Код: c# 1.
Можно ли теперь переданный экземпляр Item1List привести к BaseList (или видимо к TBaseItem<T>)? То есть сделать что-то вроде: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 22:29 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Можно ли теперь переданный экземпляр Item1List привести к BaseList (или видимо к BaseList <T>)? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 22:32 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
А зачем тут какое-либо приведение? Если Item1List наследник BaseList и Item1 наследник BaseItem, то все будет работать без дополнительных приведений. Ну или покажите более целостный код, а то из этих обрывков сложно в уме собирать картину. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2016, 23:56 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Shocker.Pro, Код: 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.
Ошибка на строке this.currentList = (Item1List<BaseItem1>)sender; "The non-generic type cannot be used with type arguments " ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 01:10 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
для начала: нет у тебя такого типа: Item1List<BaseItem1>, есть Item1List ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 01:48 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Shocker.Proдля начала: нет у тебя такого типа: Item1List<BaseItem1>, есть Item1List Ок, но вот так объявить не получается: public BaseList currentList = null; В ответ Error: "Using the generic type 'BaseList<T>' requires 1 type arguments" ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 02:18 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Потому что типа BaseList у тебя тоже нет, есть BaseList<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 02:42 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Shocker.Pro, Верно, поэтому currentList объявлен как BaseList <BaseItem> ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 03:02 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Еще раз - тип MyType и тип MyType<> - это абсолютно разные типы и друг к другу они не приводятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 10:11 |
|
Вопрос по List<T>
|
|||
---|---|---|---|
#18+
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 11:10 |
|
|
start [/forum/topic.php?fid=20&fpage=67&tid=1400842]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 179ms |
0 / 0 |