|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Как закрыть доступ к методу при наследовании? В и-нете находил только ответы из разряда "значит, неправильно проектируешь, так нельзя". Не подходит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 00:06 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Могу там вписать просто тупо NotImplementedException Не подходит по той причине, что в случае случайного использования метода (на автомате или ещё как), ошибка должна возникнуть на этапе компиляции, а не на этапе тестирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 00:08 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandНе подходит :) пичалька ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 01:18 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandМогу там вписать просто тупо NotImplementedException Не подходит по той причине, что в случае случайного использования метода (на автомате или ещё как), ошибка должна возникнуть на этапе компиляции, а не на этапе тестирования. Через PostSharp ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 01:44 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Не наследовать лист, а сделать его полем класса и наружу высунуть то, что тебе нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 03:52 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles Weyland Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Как закрыть доступ к методу при наследовании? В и-нете находил только ответы из разряда "значит, неправильно проектируешь, так нельзя". Не подходит :)Лучше попробуй применить такую структуру данных: Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 04:30 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandВ и-нете находил только ответы из разряда "значит, неправильно проектируешь, так нельзя". Не подходит :) Это самый правильный ответ. В этом случае нельзя использовать наследование, а надо использовать композицию. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 10:21 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles Weyland, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 10:28 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
PallarisНе наследовать лист, а сделать его полем класса и наружу высунуть то, что тебе нужно Нужно дофига чего.. в том числе, и отправлять в качестве аргумента в функции f(List<..>) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 10:46 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles Weyland, Код: c# 1.
мм? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 10:46 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVostt мм? А если удаление треба? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:08 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Ну и добавляешь метод удаления ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:19 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandPallarisНе наследовать лист, а сделать его полем класса и наружу высунуть то, что тебе нужно Нужно дофига чего.. в том числе, и отправлять в качестве аргумента в функции f(List<..>) Функции, кстати, не должны никогда принимать List, только так (в порядке предпочтения): IEnumerable<T> IReadOnlyCollection<T> IReadOnlyList<T> ICollection<T> IList<T> И проблем не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:21 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVosttCharles Weylandпропущено... Нужно дофига чего.. в том числе, и отправлять в качестве аргумента в функции f(List<..>) Функции, кстати, не должны никогда принимать List, только так (в порядке предпочтения): IEnumerable<T> IReadOnlyCollection<T> IReadOnlyList<T> ICollection<T> IList<T> И проблем не будет. Вот беспроблемный способ. Всё остальное влечёт за собой проблемы различной степени тяжести. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:23 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Блин, получается в любом случае мне нужно писать "своими словами" то, что уже написано. Если мне нужен List<Row> со своим конструктором (вместо конструктора без параметров) и со своим Add без параметров (вместо Add с параметрами) - мне придётся писать чуть ли не с нуля свой класс, в котором реализовывать всё, что реализовано в List, кроме этих двух вещей. }{ерня какая-то(( ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:23 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVosttФункции, кстати, не должны никогда принимать List, только так (в порядке предпочтения): IEnumerable<T> IReadOnlyCollection<T> IReadOnlyList<T> ICollection<T> IList<T> И проблем не будет. с этим согласен. Это я навскидку сказал. Потом сообразил, что этого нафиг не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:25 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandБлин, получается в любом случае мне нужно писать "своими словами" то, что уже написано.Да, если будешь игнорировать мои сообщения . Впрочем, можно применить что-то вроде ObservableCollection и подписаться на изменения, но это тоже ничего хорошего. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:26 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles Weyland}{ерня какая-то(( Никакой херни. Вот тебе заготовка: Код: 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.
Внутри можешь спрятать List<T>. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:26 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Алексей КЛучше попробуй применить такую структуру данных: Код: c# 1. 2. 3. 4. 5. 6.
не совсем понятно. Я ведь хочу создать свой класс Rows. Я в нём ещё пару своих событий описываю, добавляю функциональность, которая необходима для работы с группой строк как с одним объектом. Например, "добавить колонку", "удалить колонку" в случае изменения количества столбцов в заголовке header и т.д. Поэтому считаю неправильным работать с "голым" классом List<Row>. Куда ж всю логику работы с группой строк девать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:29 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Алексей КДа, если будешь игнорировать мои сообщения . не, я не игнорирую - благодарен за любые высказанные мысли. Как раз последовательно читал всё, что мне написали и отвечал. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:30 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandАлексей КЛучше попробуй применить такую структуру данных: Код: c# 1. 2. 3. 4. 5. 6.
не совсем понятно. Я ведь хочу создать свой класс Rows. Я в нём ещё пару своих событий описываю, добавляю функциональность, которая необходима для работы с группой строк как с одним объектом. Например, "добавить колонку", "удалить колонку" в случае изменения количества столбцов в заголовке header и т.д. Поэтому считаю неправильным работать с "голым" классом List<Row>. Куда ж всю логику работы с группой строк девать?Ну и добавляй в класс Model методы "добавить колонку" и т. п. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:30 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandАлексей КЛучше попробуй применить такую структуру данных: Код: c# 1. 2. 3. 4. 5. 6.
не совсем понятно. Я ведь хочу создать свой класс Rows. Я в нём ещё пару своих событий описываю, добавляю функциональность, которая необходима для работы с группой строк как с одним объектом. Например, "добавить колонку", "удалить колонку" в случае изменения количества столбцов в заголовке header и т.д. Поэтому считаю неправильным работать с "голым" классом List<Row>. Куда ж всю логику работы с группой строк девать? Алексей говорит дело, послушай его. Композиция лучше наследования. Чем монстрячить свой класс-коллекцию, создай отедельный класс, с конкретными методами и свойствами, где будет в том числе коллекция. Всегда, предпочитай композицию наследованию! И 20 раз подумай, прежде чем делать свою коллекцию в режиме наследования — это практически всегда тупиковый путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:31 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVosttВнутри можешь спрятать List<T>. это я и имел в виду. Просто на пустом месте разрастается код. Получится Код: c# 1.
и так весь код. Ну, видимо, по этому пути пойти придётся. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:33 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
В общем, послушав вас, сделаю так Код: c# 1. 2. 3. 4. 5. 6.
Если профи выбирают этот путь, значит, это и есть правильный путь. Спасибо за информацию)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:35 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandВ общем, послушав вас, сделаю так Код: c# 1. 2. 3. 4. 5. 6.
Если профи выбирают этот путь, значит, это и есть правильный путь. Спасибо за информацию))Зачем Model реализовывать IList? Есть объективные причины, кроме желания потренироваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:39 |
|
|
start [/forum/topic.php?fid=20&startmsg=39318228&tid=1400322]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 169ms |
0 / 0 |