powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
25 сообщений из 43, страница 1 из 2
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407143
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом?

Вот пример кода (что-то из ASP.NET MVC).

Здесь я создаю какую-то модель и хочу сделать её коллецию Submodels неизменяемой (immutable). Поэтому я использую IReadOnlyCollection. При этом я хочу получить отложенное выполнение, поэтому возвращаю из линка интерфейсный тип. Но поскольку нельзя вернуть из линка тип IReadOnlyCollection, то возвращаю один из типов, от которого он наследуется. При этом подразумевается, что настоящий запрос к БД будет, когда кто-нибудь начнёт проходить каким-нибудь foreach'ем по коллекции Submodels. Так нормально я сделал? А как бы сделали вы? Ещё раз требования: неизменяемая коллеция и отложенное выполнение.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Model
{
    public IReadOnlyCollection<Submodel> Submodels { get; private set; }

    public Model()
    {
        // Use Entity Framework.
        using (DatabaseContext ndb = new DatabaseContext())
        {
            this.Submodels = (from o in ndb.MyEntities
                              where ...
                              orderby ...
                              select new Submodel(...)).AsEnumerable();
        }
    }
}
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407148
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот почему спрашиваю. Я тут начитался про всякое защитное программирование, и вот эту статью в частности. Испугался, и решил, что если сделаю что-то вроде того, что выше написал, то у человека по ссылке отпадёт желание использовать функции типа Censure (там поиском по странице легко найти) таким образом, как он использовал. У него, как я понимаю, при попытке изменить такую коллецию, либо эксепшен вылетит, либо ещё что-то, но она не изменится.

Но я вот не уверен, что это сработает без коркретной реализации. Достаточно ли только интерфейса?
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407153
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты иногда сам читаешь свои глупости?

user7320Можно ли предотвратить коллецию от изменений

user7320Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом?

"Предотвратить" - глагол, что сделать. Это реализация.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407166
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы иногда сам читаешь свои глупости?

user7320Можно ли предотвратить коллецию от изменений

user7320Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом?

"Предотвратить" - глагол, что сделать. Это реализация.
Не понял.

Я хочу, чтобы не изменяли мою коллецию. Но и одновременно хочу, чтобы было отложенное выполнение. Если я напишу такое

Код: c#
1.
2.
3.
4.
5.
this.Submodels = new ReadOnlyCollection(
	from o in ndb.MyEntities
	where ...
	orderby ...
	select new Submodel(...)).ToList();



то не будет отложенного выполнения. А если оставлю, как есть (т. е. не использую конкретную реализацию интерфейса IReadOnlyCollection), то я не знаю, будет ли моя коллеция ридонли. Ведь нельзя же создать экзепляр интерфейса.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407175
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там ещё перед from и после ToLost() по скобке забыл.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407223
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я хочу, чтобы не изменяли мою коллецию.
ReadOnlyCollection, List<T>.AsReadOnly

user7320Но и одновременно хочу, чтобы было отложенное выполнение.
Lazy<T>, lazy load property
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407236
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал читать про Lazy в МСДН. Понял, что мне это не надо, достаточно ReadOnlyCollection. ))
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407244
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Начал читать про Lazy в МСДН. Понял, что мне это не надо, достаточно ReadOnlyCollection. ))
это как имхо lazy и ReadOnlyCollection соотносятся между собой как колбаса и композитор марк фрадкин
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407326
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, не забивай свою голову всякими глупостями. Вот тебе решение твоей задачи в целом . Не нужны тебе никакие readonly коллекции.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class Repository
{
    private IDatabaseContext Context { get; private set; }

    public Repository(IDatabaseContext context)
    {
        Context = context;
    }

    public IEnumerable<Submodel> GetSubmodels()
    {
        return Context.
    }
}



А модель ничего не должна знать о IDatabaseContext, а о DatabaseContext и подавно.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407336
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУuser7320, не забивай свою голову всякими глупостями. Вот тебе решение твоей задачи в целом . Не нужны тебе никакие readonly коллекции.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class Repository
{
    private IDatabaseContext Context { get; private set; }

    public Repository(IDatabaseContext context)
    {
        Context = context;
    }

    public IEnumerable<Submodel> GetSubmodels()
    {
        return Context.
    }
}



А модель ничего не должна знать о IDatabaseContext, а о DatabaseContext и подавно.

Даже и не знаю, давать тебе ссылку, или нет...
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407358
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом?

Вот пример кода (что-то из ASP.NET MVC).

Здесь я создаю какую-то модель и хочу сделать её коллецию Submodels неизменяемой (immutable). Поэтому я использую IReadOnlyCollection. При этом я хочу получить отложенное выполнение , поэтому возвращаю из линка интерфейсный тип. Но поскольку нельзя вернуть из линка тип IReadOnlyCollection, то возвращаю один из типов, от которого он наследуется. При этом подразумевается, что настоящий запрос к БД будет, когда кто-нибудь начнёт проходить каким-нибудь foreach'ем по коллекции Submodels. Так нормально я сделал? А как бы сделали вы? Ещё раз требования: неизменяемая коллеция и отложенное выполнение.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Model
{
    public IReadOnlyCollection<Submodel> Submodels { get; private set; }

    public Model()
    {
        // Use Entity Framework.
        using (DatabaseContext ndb = new DatabaseContext())
        {
            this.Submodels = (from o in ndb.MyEntities
                              where ...
                              orderby ...
                              select new Submodel(...)).AsEnumerable();
        }
    }
}

То есть ты хочешь, чтобы запрос к БД реально выполнялся, когда контекст уже disposed? Боюсь, что исключение поймаешь (хотя с EF я не работал, утверждать не буду).
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407364
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДаже и не знаю, давать тебе ссылку, или нет...
Ты о чем?
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407393
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, об этом: 14878644 .
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38407400
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, об этом: 14878644 .
У человека такая каша в голове, что даже не хочется влезать в это дело :)
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408321
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУuser7320, не забивай свою голову всякими глупостями. Вот тебе решение твоей задачи в целом . Не нужны тебе никакие readonly коллекции.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class Repository
{
    private IDatabaseContext Context { get; private set; }

    public Repository(IDatabaseContext context)
    {
        Context = context;
    }

    public IEnumerable<Submodel> GetSubmodels()
    {
        return Context.
    }
}



А модель ничего не должна знать о IDatabaseContext, а о DatabaseContext и подавно.
У меня не будет репозитория. Пока не будет. У меня времени нет его по-нормальному делать. А потом посмотрим. Захотят репозиторий - я время дополнительное попрошу.

И главное, модели предметной области толком-то и нет. Приложение - тупо справочник. Сущности со связями. Всё. Ни расчётов, ни отчётов, ничего. Вся модель - БД в СУБД. Так что модель в ASP.NET MVC и заполнять-то нечем. Надо тупо создать справочник-сайт. Веб 1.0. Запросы к БД и всё. Поэтому модели у меня - это модели представлений на самом деле, если говорить в терминоГолии WPF... Дайте побыдлокодить, в конце-то концов! ))
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408328
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом?

Вот пример кода (что-то из ASP.NET MVC).

Здесь я создаю какую-то модель и хочу сделать её коллецию Submodels неизменяемой (immutable). Поэтому я использую IReadOnlyCollection. При этом я хочу получить отложенное выполнение , поэтому возвращаю из линка интерфейсный тип. Но поскольку нельзя вернуть из линка тип IReadOnlyCollection, то возвращаю один из типов, от которого он наследуется. При этом подразумевается, что настоящий запрос к БД будет, когда кто-нибудь начнёт проходить каким-нибудь foreach'ем по коллекции Submodels. Так нормально я сделал? А как бы сделали вы? Ещё раз требования: неизменяемая коллеция и отложенное выполнение.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Model
{
    public IReadOnlyCollection<Submodel> Submodels { get; private set; }

    public Model()
    {
        // Use Entity Framework.
        using (DatabaseContext ndb = new DatabaseContext())
        {
            this.Submodels = (from o in ndb.MyEntities
                              where ...
                              orderby ...
                              select new Submodel(...)).AsEnumerable();
        }
    }
}

То есть ты хочешь, чтобы запрос к БД реально выполнялся, когда контекст уже disposed? Боюсь, что исключение поймаешь (хотя с EF я не работал, утверждать не буду).
Очень правильное замечание! Поэтому я уже отказался от этого в пользу создания экземпляра ReadOnlyCollection.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408339
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320И главное, модели предметной области толком-то и нет. Приложение - тупо справочник.Справочник чего? Сферической фигни в вакууме? А данные в этот сферический справочник откуда попадают? А сколько этих данных?
А зачем они вообще нужны эти данные, если они сферические?

Вот ты сейчас набыдлокодишь, а людям будет неудобно пользоваться.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408343
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Дайте побыдлокодить, в конце-то концов! ))
Тогда вообще ничего не пиши, возьми EF и обращайся к БД прямо в контроллере.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408385
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAМСУ, об этом: 14878644 .
У человека такая каша в голове, что даже не хочется влезать в это дело :)
Мне уже значительно лучше! Я уже продвинулся и вот тут следующий вопрос у меня возник.

МСУuser7320Дайте побыдлокодить, в конце-то концов! ))
Тогда вообще ничего не пиши, возьми EF и обращайся к БД прямо в контроллере.
Это я уже давно умею делать - скучно. Теперь вот модели делаю. Репозиторий я делал в приложении для WPF - нудная работа, а толку я от неё так и не увидел. Вы там у себя крутые штуки делаете, с версиями и поддержкой и развитием годами, поэтому вам и кажется, что если в модель репозиторий поместить (ну в смысле, что без репозитория всё делать), то будет ад и погибель. А я так сразу не могу по всм правилам всё делать и все паттерны соблюсти - у меня уже каша в голове.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408395
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
да люди поймут и простят ))
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408397
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Репозиторий я делал в приложении для WPF - нудная работа, а толку я от неё так и не увидел.Через это приложение заполняется справочник?
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408399
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320Репозиторий я делал в приложении для WPF - нудная работа, а толку я от неё так и не увидел.Через это приложение заполняется справочник?
Тогда я бы взял этот репозиторий и использовал его тут.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408409
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAпропущено...
Через это приложение заполняется справочник?
Тогда я бы взял этот репозиторий и использовал его тут.Заполнение справочника вообще не на .Net написано?
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408418
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAuser7320пропущено...

Тогда я бы взял этот репозиторий и использовал его тут.Заполнение справочника вообще не на .Net написано?
Мы на него Лайтсвич натравили - вроде, чего-то неплохое он выдал. Там человек его попробует до ума довести. Если не получится, буду писать свой редактор с репозиторием и тогда уже использовать его в нынешнем своём приложении.

А для тестов я руками в таблички данные повбивал в Management Studio.

Лучше помогите, пожалуйста, с этим вопросом . Я так быстрее к репозиторию приду.
...
Рейтинг: 0 / 0
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
    #38408441
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320skyANAпропущено...
Заполнение справочника вообще не на .Net написано?
Мы на него Лайтсвич натравили - вроде, чего-то неплохое он выдал. Там человек его попробует до ума довести. Если не получится, буду писать свой редактор с репозиторием и тогда уже использовать его в нынешнем своём приложении.

А для тестов я руками в таблички данные повбивал в Management Studio.

Лучше помогите, пожалуйста, с этим вопросом . Я так быстрее к репозиторию приду.То есть вы собрались развивать и поддерживать две различных программы, написанные на .Net, не обладающие общим кодом, но работающие с одной БД.

Вы не ищете лёгких путей.
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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