powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / закрыть доступ к методу при наследовании
20 сообщений из 45, страница 2 из 2
закрыть доступ к методу при наследовании
    #39318488
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland
Если профи выбирают этот путь, значит, это и есть правильный путь.
Спасибо за информацию))
С чего ты взял что они профи? :)

Алексей КЗачем Model реализовывать IList? Есть объективные причины, кроме желания потренироваться?
С чего ты взял, что это модель? Может сложный бизнес объект?
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318492
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перебор строк в foreach, применение к ним linq для поиска, выборки, удаление, копирование содержимого строки.
Я сейчас посмотрел все методы в iList и вижу, что все до единого будут использованы.

А... стоп.. кроме public void Add(T item).
точно, тогда iList не подходит. От IEnumerable наследоваться буду.
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318493
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВС чего ты взял, что это модель? Может сложный бизнес объект?

Тем более, коллекция должна быть коллекцией, объект не должен вести себя как коллекция.
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318530
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weylandперебор строк в foreach, применение к ним linq для поиска, выборки, удаление, копирование содержимого строки.
Я сейчас посмотрел все методы в iList и вижу, что все до единого будут использованы.

А... стоп.. кроме public void Add(T item).
точно, тогда iList не подходит. От IEnumerable наследоваться буду.Ну и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг!
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318533
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ
Алексей КЗачем Model реализовывать IList? Есть объективные причины, кроме желания потренироваться?
С чего ты взял, что это модель? Может сложный бизнес объект?Называй это как хочешь.
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318545
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВС чего ты взял, что это модель? Может сложный бизнес объект?

Тем более, коллекция должна быть коллекцией, объект не должен вести себя как коллекция.Редкий случай, когда наши мнения совпадают. Пятница - день чудес! :-)
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318558
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг!
Код: c#
1.
2.
3.
4.
5.
6.
class Model
{
    public HH Header { get; set; }

    public List<Row> Rows { get; set; }
}


Так получается, что юзер вполне может вписать
Код: c#
1.
model.Rows.Add(bla)

чем нарушит работу модели.
Ведь метод есть - значит, им можно воспользоваться.
Нельзя Add с параметром делать. Можно только
Код: c#
1.
model.AddRow()


Поэтому и получается так, что мне придётся сделать объект, который будет вести себя как коллекция, что противоречит вашим (Алексей К и hVostt) высказываниям
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318559
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КCharles Weylandперебор строк в foreach, применение к ним linq для поиска, выборки, удаление, копирование содержимого строки.
Я сейчас посмотрел все методы в iList и вижу, что все до единого будут использованы.

А... стоп.. кроме public void Add(T item).
точно, тогда iList не подходит. От IEnumerable наследоваться буду.Ну и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг!Имеется ввиду это:
Код: c#
1.
2.
3.
4.
foreach(var row in model.Rows)
{
    //......
}
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318562
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandТак получается, что юзер вполне может вписать
Код: c#
1.
model.Rows.Add(bla)


чем нарушит работу модели.

Инкапсулируй это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class Model
{
    private IList<Row> _rows;

    public HH Header { get; set; }

    public IReadOnlyList<Row> Rows { get {return _rows;} }

    public Model(IEnumerable<Row> rows)
    {
        _rows = (rows as IList<Row>) ?? rows.ToList();
    }
}



Всё, теперь не может!
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318564
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandПоэтому и получается так, что мне придётся сделать объект, который будет вести себя как коллекция, что противоречит вашим (Алексей К и hVostt) высказываниям

см. выше
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318568
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandАлексей КНу и обращайся для этих целей к инкапсулированному свойству Rows. Зачем делегировать этот функционал кому-то ещё? Делегирование наш враг!
Код: c#
1.
2.
3.
4.
5.
6.
class Model
{
    public HH Header { get; set; }

    public List<Row> Rows { get; set; }
}


Так получается, что юзер вполне может вписать
Код: c#
1.
model.Rows.Add(bla)

чем нарушит работу модели.
Ведь метод есть - значит, им можно воспользоваться.
Нельзя Add с параметром делать. Можно только
Код: c#
1.
model.AddRow()


Поэтому и получается так, что мне придётся сделать объект, который будет вести себя как коллекция, что противоречит вашим (Алексей К и hVostt) высказываниямКак добавление записи может нарушить работу модели? Если нужна проверка на соответствие данных каким-либо критериям, то в Model можно добавить метод IsValid. Не нужно смешивать валидацию и конструирование. Представь, что твой Model потребуется пропускать через какой-нибудь XmlSerializer.
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318589
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВсё, теперь не может!
действительно) круть))

Алексей ККак добавление записи может нарушить работу модели? (..) Не нужно смешивать валидацию и конструирование
ну элементарно.
Ведь если есть у нас коллекция чисел
Код: c#
1.
List<int> a

, то добавлять туда можно только числа, верно ведь? Если пользователь добавит a.Add("MichaeL"); то получит ошибку компиляции. Вот тебе "смешение" валидации и конструирования, как ты выразился.
Здесь примерно то же самое.
Решение hVostt в данном случае мне нравится))
(не долго длилась пятница-день чудес)
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318625
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того, чтоб создать подобный класс, нужно создать свой класс на базе List<T> создать интерфейс который будет описывать все необходимые вам методы, который будет наследован от IListReadOnly<T> и передавать свой интерфейс, а не класс List<T>.
А то, что там есть какие то Public методы, о которые в интерфейсе ни чего не сказано, вас волновать не должно, это совершенно не имеет ни какого значения.
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318825
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttCharles WeylandТак получается, что юзер вполне может вписать
Код: c#
1.
model.Rows.Add(bla)


чем нарушит работу модели.

Инкапсулируй это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class Model
{
    private IList<Row> _rows;

    public HH Header { get; set; }

    public IReadOnlyList<Row> Rows { get {return _rows;} }

    public Model(IEnumerable<Row> rows)
    {
        _rows = (rows as IList<Row>) ?? rows.ToList();
    }
}



Всё, теперь не может!
Хвост, ты че советуешь? Это даже не компилируется!
Сам же сегодня в соседнем топике писал про это!
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39318896
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВХвост, ты че советуешь? Это даже не компилируется!
Сам же сегодня в соседнем топике писал про это!

Я знаю И собственно именно об этом я и говорил. Придётся IList заменить на List. Ничё не поделаешь...
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39319038
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
public Model(IEnumerable<Row> rows)
    {
        _rows = (rows as IList<Row>) ?? rows.ToList();
    }


А потом чувак в лист который как аргумент передал айтемов накидает, вот тебе и ридонли...)
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39319044
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.А потом чувак в лист который как аргумент передал айтемов накидает, вот тебе и ридонли...)
косяк)))))))
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39319086
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.А потом чувак в лист который как аргумент передал айтемов накидает, вот тебе и ридонли...)


Уаще дыра в бизопасности, ниговори
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39319095
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

скорее в абстракции)
...
Рейтинг: 0 / 0
закрыть доступ к методу при наследовании
    #39319103
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

да какая уж тут абстракция...
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / закрыть доступ к методу при наследовании
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]