|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#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 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles Weyland Если профи выбирают этот путь, значит, это и есть правильный путь. Спасибо за информацию)) С чего ты взял что они профи? :) Алексей КЗачем Model реализовывать IList? Есть объективные причины, кроме желания потренироваться? С чего ты взял, что это модель? Может сложный бизнес объект? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:51 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
перебор строк в foreach, применение к ним linq для поиска, выборки, удаление, копирование содержимого строки. Я сейчас посмотрел все методы в iList и вижу, что все до единого будут использованы. А... стоп.. кроме public void Add(T item). точно, тогда iList не подходит. От IEnumerable наследоваться буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:54 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
ЕвгенийВС чего ты взял, что это модель? Может сложный бизнес объект? Тем более, коллекция должна быть коллекцией, объект не должен вести себя как коллекция. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 11:55 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles Weylandперебор строк в foreach, применение к ним linq для поиска, выборки, удаление, копирование содержимого строки. Я сейчас посмотрел все методы в iList и вижу, что все до единого будут использованы. А... стоп.. кроме public void Add(T item). точно, тогда iList не подходит. От IEnumerable наследоваться буду.Ну и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:27 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
ЕвгенийВ Алексей КЗачем Model реализовывать IList? Есть объективные причины, кроме желания потренироваться? С чего ты взял, что это модель? Может сложный бизнес объект?Называй это как хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:28 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVosttЕвгенийВС чего ты взял, что это модель? Может сложный бизнес объект? Тем более, коллекция должна быть коллекцией, объект не должен вести себя как коллекция.Редкий случай, когда наши мнения совпадают. Пятница - день чудес! :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:36 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Алексей КНу и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг! Код: c# 1. 2. 3. 4. 5. 6.
Так получается, что юзер вполне может вписать Код: c# 1.
чем нарушит работу модели. Ведь метод есть - значит, им можно воспользоваться. Нельзя Add с параметром делать. Можно только Код: c# 1.
Поэтому и получается так, что мне придётся сделать объект, который будет вести себя как коллекция, что противоречит вашим (Алексей К и hVostt) высказываниям ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:43 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Алексей КCharles Weylandперебор строк в foreach, применение к ним linq для поиска, выборки, удаление, копирование содержимого строки. Я сейчас посмотрел все методы в iList и вижу, что все до единого будут использованы. А... стоп.. кроме public void Add(T item). точно, тогда iList не подходит. От IEnumerable наследоваться буду.Ну и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг!Имеется ввиду это: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:45 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandТак получается, что юзер вполне может вписать Код: c# 1.
чем нарушит работу модели. Инкапсулируй это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Всё, теперь не может! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:47 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandПоэтому и получается так, что мне придётся сделать объект, который будет вести себя как коллекция, что противоречит вашим (Алексей К и hVostt) высказываниям см. выше ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:48 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Charles WeylandАлексей КНу и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг! Код: c# 1. 2. 3. 4. 5. 6.
Так получается, что юзер вполне может вписать Код: c# 1.
чем нарушит работу модели. Ведь метод есть - значит, им можно воспользоваться. Нельзя Add с параметром делать. Можно только Код: c# 1.
Поэтому и получается так, что мне придётся сделать объект, который будет вести себя как коллекция, что противоречит вашим (Алексей К и hVostt) высказываниямКак добавление записи может нарушить работу модели? Если нужна проверка на соответствие данных каким-либо критериям, то в Model можно добавить метод IsValid. Не нужно смешивать валидацию и конструирование. Представь, что твой Model потребуется пропускать через какой-нибудь XmlSerializer. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 12:51 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVosttВсё, теперь не может! действительно) круть)) Алексей ККак добавление записи может нарушить работу модели? (..) Не нужно смешивать валидацию и конструирование ну элементарно. Ведь если есть у нас коллекция чисел Код: c# 1.
, то добавлять туда можно только числа, верно ведь? Если пользователь добавит a.Add("MichaeL"); то получит ошибку компиляции. Вот тебе "смешение" валидации и конструирования, как ты выразился. Здесь примерно то же самое. Решение hVostt в данном случае мне нравится)) (не долго длилась пятница-день чудес) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 13:06 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
для того, чтоб создать подобный класс, нужно создать свой класс на базе List<T> создать интерфейс который будет описывать все необходимые вам методы, который будет наследован от IListReadOnly<T> и передавать свой интерфейс, а не класс List<T>. А то, что там есть какие то Public методы, о которые в интерфейсе ни чего не сказано, вас волновать не должно, это совершенно не имеет ни какого значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 13:38 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVosttCharles WeylandТак получается, что юзер вполне может вписать Код: c# 1.
чем нарушит работу модели. Инкапсулируй это: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Всё, теперь не может! Хвост, ты че советуешь? Это даже не компилируется! Сам же сегодня в соседнем топике писал про это! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 16:24 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
ЕвгенийВХвост, ты че советуешь? Это даже не компилируется! Сам же сегодня в соседнем топике писал про это! Я знаю И собственно именно об этом я и говорил. Придётся IList заменить на List. Ничё не поделаешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2016, 17:52 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4.
А потом чувак в лист который как аргумент передал айтемов накидает, вот тебе и ридонли...) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2016, 01:38 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Denis.А потом чувак в лист который как аргумент передал айтемов накидает, вот тебе и ридонли...) косяк))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2016, 02:10 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
Denis.А потом чувак в лист который как аргумент передал айтемов накидает, вот тебе и ридонли...) Уаще дыра в бизопасности, ниговори ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2016, 13:01 |
|
закрыть доступ к методу при наследовании
|
|||
---|---|---|---|
#18+
hVostt, скорее в абстракции) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2016, 13:44 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400322]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 172ms |
0 / 0 |