|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
Т. е. не с помощью конкретной реализации 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 13:29 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
Я вот почему спрашиваю. Я тут начитался про всякое защитное программирование, и вот эту статью в частности. Испугался, и решил, что если сделаю что-то вроде того, что выше написал, то у человека по ссылке отпадёт желание использовать функции типа Censure (там поиском по странице легко найти) таким образом, как он использовал. У него, как я понимаю, при попытке изменить такую коллецию, либо эксепшен вылетит, либо ещё что-то, но она не изменится. Но я вот не уверен, что это сработает без коркретной реализации. Достаточно ли только интерфейса? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 13:33 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
Ты иногда сам читаешь свои глупости? user7320Можно ли предотвратить коллецию от изменений user7320Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом? "Предотвратить" - глагол, что сделать. Это реализация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 13:34 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
МСУТы иногда сам читаешь свои глупости? user7320Можно ли предотвратить коллецию от изменений user7320Т. е. не с помощью конкретной реализации IReadOnlyCollection (например, ReadOnlyCollection), а именно только с интерфейсом? "Предотвратить" - глагол, что сделать. Это реализация. Не понял. Я хочу, чтобы не изменяли мою коллецию. Но и одновременно хочу, чтобы было отложенное выполнение. Если я напишу такое Код: c# 1. 2. 3. 4. 5.
то не будет отложенного выполнения. А если оставлю, как есть (т. е. не использую конкретную реализацию интерфейса IReadOnlyCollection), то я не знаю, будет ли моя коллеция ридонли. Ведь нельзя же создать экзепляр интерфейса. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 13:40 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
Там ещё перед from и после ToLost() по скобке забыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 13:44 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320Я хочу, чтобы не изменяли мою коллецию. ReadOnlyCollection, List<T>.AsReadOnly user7320Но и одновременно хочу, чтобы было отложенное выполнение. Lazy<T>, lazy load property ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 14:14 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
Начал читать про Lazy в МСДН. Понял, что мне это не надо, достаточно ReadOnlyCollection. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 14:20 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320Начал читать про Lazy в МСДН. Понял, что мне это не надо, достаточно ReadOnlyCollection. )) это как имхо lazy и ReadOnlyCollection соотносятся между собой как колбаса и композитор марк фрадкин ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 14:24 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320, не забивай свою голову всякими глупостями. Вот тебе решение твоей задачи в целом . Не нужны тебе никакие readonly коллекции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
А модель ничего не должна знать о IDatabaseContext, а о DatabaseContext и подавно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 15:02 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
МСУuser7320, не забивай свою голову всякими глупостями. Вот тебе решение твоей задачи в целом . Не нужны тебе никакие readonly коллекции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
А модель ничего не должна знать о IDatabaseContext, а о DatabaseContext и подавно. Даже и не знаю, давать тебе ссылку, или нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 15:07 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
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.
То есть ты хочешь, чтобы запрос к БД реально выполнялся, когда контекст уже disposed? Боюсь, что исключение поймаешь (хотя с EF я не работал, утверждать не буду). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 15:19 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
skyANAДаже и не знаю, давать тебе ссылку, или нет... Ты о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 15:22 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
МСУ, об этом: 14878644 . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 15:33 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
skyANAМСУ, об этом: 14878644 . У человека такая каша в голове, что даже не хочется влезать в это дело :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 15:34 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
МСУuser7320, не забивай свою голову всякими глупостями. Вот тебе решение твоей задачи в целом . Не нужны тебе никакие readonly коллекции. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
А модель ничего не должна знать о IDatabaseContext, а о DatabaseContext и подавно. У меня не будет репозитория. Пока не будет. У меня времени нет его по-нормальному делать. А потом посмотрим. Захотят репозиторий - я время дополнительное попрошу. И главное, модели предметной области толком-то и нет. Приложение - тупо справочник. Сущности со связями. Всё. Ни расчётов, ни отчётов, ничего. Вся модель - БД в СУБД. Так что модель в ASP.NET MVC и заполнять-то нечем. Надо тупо создать справочник-сайт. Веб 1.0. Запросы к БД и всё. Поэтому модели у меня - это модели представлений на самом деле, если говорить в терминоГолии WPF... Дайте побыдлокодить, в конце-то концов! )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:11 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
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.
То есть ты хочешь, чтобы запрос к БД реально выполнялся, когда контекст уже disposed? Боюсь, что исключение поймаешь (хотя с EF я не работал, утверждать не буду). Очень правильное замечание! Поэтому я уже отказался от этого в пользу создания экземпляра ReadOnlyCollection. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:13 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320И главное, модели предметной области толком-то и нет. Приложение - тупо справочник.Справочник чего? Сферической фигни в вакууме? А данные в этот сферический справочник откуда попадают? А сколько этих данных? А зачем они вообще нужны эти данные, если они сферические? Вот ты сейчас набыдлокодишь, а людям будет неудобно пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:19 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320Дайте побыдлокодить, в конце-то концов! )) Тогда вообще ничего не пиши, возьми EF и обращайся к БД прямо в контроллере. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:20 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
МСУskyANAМСУ, об этом: 14878644 . У человека такая каша в голове, что даже не хочется влезать в это дело :) Мне уже значительно лучше! Я уже продвинулся и вот тут следующий вопрос у меня возник. МСУuser7320Дайте побыдлокодить, в конце-то концов! )) Тогда вообще ничего не пиши, возьми EF и обращайся к БД прямо в контроллере. Это я уже давно умею делать - скучно. Теперь вот модели делаю. Репозиторий я делал в приложении для WPF - нудная работа, а толку я от неё так и не увидел. Вы там у себя крутые штуки делаете, с версиями и поддержкой и развитием годами, поэтому вам и кажется, что если в модель репозиторий поместить (ну в смысле, что без репозитория всё делать), то будет ад и погибель. А я так сразу не могу по всм правилам всё делать и все паттерны соблюсти - у меня уже каша в голове. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:37 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
skyANA, да люди поймут и простят )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:43 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320Репозиторий я делал в приложении для WPF - нудная работа, а толку я от неё так и не увидел.Через это приложение заполняется справочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:43 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
skyANAuser7320Репозиторий я делал в приложении для WPF - нудная работа, а толку я от неё так и не увидел.Через это приложение заполняется справочник? Тогда я бы взял этот репозиторий и использовал его тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:44 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320skyANAпропущено... Через это приложение заполняется справочник? Тогда я бы взял этот репозиторий и использовал его тут.Заполнение справочника вообще не на .Net написано? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:49 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
skyANAuser7320пропущено... Тогда я бы взял этот репозиторий и использовал его тут.Заполнение справочника вообще не на .Net написано? Мы на него Лайтсвич натравили - вроде, чего-то неплохое он выдал. Там человек его попробует до ума довести. Если не получится, буду писать свой редактор с репозиторием и тогда уже использовать его в нынешнем своём приложении. А для тестов я руками в таблички данные повбивал в Management Studio. Лучше помогите, пожалуйста, с этим вопросом . Я так быстрее к репозиторию приду. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:53 |
|
Можно ли предотвратить коллецию от изменений с помощью IReadOnlyCollection?
|
|||
---|---|---|---|
#18+
user7320skyANAпропущено... Заполнение справочника вообще не на .Net написано? Мы на него Лайтсвич натравили - вроде, чего-то неплохое он выдал. Там человек его попробует до ума довести. Если не получится, буду писать свой редактор с репозиторием и тогда уже использовать его в нынешнем своём приложении. А для тестов я руками в таблички данные повбивал в Management Studio. Лучше помогите, пожалуйста, с этим вопросом . Я так быстрее к репозиторию приду.То есть вы собрались развивать и поддерживать две различных программы, написанные на .Net, не обладающие общим кодом, но работающие с одной БД. Вы не ищете лёгких путей. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 14:01 |
|
|
start [/forum/search_topic.php?author=pozhanka&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
106ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 465ms |
total: | 698ms |
0 / 0 |