Здесь есть хорошие ответы. Я бы добавил к ним следующие моменты.
Каков правильный способ C # для представления структуры данных, которая «логически» (то есть «для человеческого разума») просто список вещей с несколькими колокольчиками?
Спросите любого десяти людей, не являющихся компьютерными программистами, которые знакомы с наличием футбола, чтобы заполнить пробел:
A football team is a particular kind of _____
Кто-нибудь сказал «список футболистов с несколькими колокольчиками», или все они говорили «спортивная команда» или «клуб» или «организация»? Ваше мнение о том, что футбольная команда - это особый список игроков , - это ваш ум и ваш человеческий разум.
List
является механизмом . Футбольная команда является бизнес-объектом , то есть объектом, который представляет собой концепцию, которая находится в бизнес-домене программы. Не смешивайте их! Футбольная команда - это своего рода команда ; у него есть список , список - список игроков . Реестр не является конкретным списком игроков . Список - список игроков. Поэтому создайте свойство, называемоеRoster
, которое являетсяList
. И сделайте этоReadOnlyList
, пока вы на нем, если не верите, что все, кто знает о футбольной команде, удаляют игроков из списка.Наследуется от
List
всегда неприемлемо ?Неприемлемо для кого? Меня? Нет.
Когда это приемлемо?
Когда вы создаете механизм, который расширяет механизм
List
.Что должен знать программист, когда решая, наследовать ли от
List
или нет?Я строю механизм или бизнес-объект ?
Но это много кода! Что я получаю за все, что работает?
Вы потратили больше времени, набрав свой вопрос о том, что потребовалось бы пятьдесят раз написать методы пересылки для соответствующих членов
List
. Вы явно не боитесь многословия, и здесь мы говорим о очень небольшом количестве кода; это несколько минут работы.UPDATE
Я немного подумал, и есть еще одна причина не моделировать футбольную команду как список игроков. На самом деле может быть плохой идеей моделировать футбольную команду, поскольку имеет список игроков. Проблема с командой, имеющей список игроков, заключается в том, что у вас есть моментальный снимок команды в момент времени . Я не знаю, каково ваше деловое дело для этого класса, но если бы у меня был класс, представлявший футбольную команду, я бы хотел задать ему вопросы: «Сколько игроков Seahawks пропустили игры из-за травмы в период с 2003 по 2013 год?» или «Какой игрок в Денвере, который ранее играл за другую команду, имел наибольшее увеличение по годам в ярдах?» или « В этом году все пигеры прошли весь путь? »
То есть, футбольная команда кажется мне хорошо смоделированной как сборник исторических фактов , например, когда игрок был завербован, получил травму, вышел на пенсию и т. д. Очевидно, что текущий список игроков является важным фактом, который, вероятно, должен быть фронт-центром, но могут быть другие интересные вещи, которые вы хотите сделать с этим объектом которые требуют более исторической перспективы.
http://www.postgresql.org/docs/8.3/interactive/datatype-datetime.html#DATATYPE-TIMEZONES
Все осведомленные о часовом поясе даты и время хранятся внутренне в UTC. Они преобразовываются в местное время в зоне, определенной параметром конфигурации часового пояса прежде чем быть отображенным клиенту.
единственный способ снабдить его postgresql состоит в том, чтобы сохранить его отдельно.