TAnonim имеется в виду любая научная (academic) статья (paper), т.е. материал, не разжеванный уже 100500 раз в разных книгах и учебниках, а нечто, опубликованное впервые. Алгоритм, метод расчёта, модель, подход.
gimade Коллекция конкретных решений вовсе не обязательно научит вас проектировать БД, также как и ответы в конце задачника не научат вас решать уравнения (хотя коллекция конечно хорошая). Чтобы научиться это делать, нужно почитать о том, как люди это делают, и почему они принимают те или иные решения. Откройте хорошую книгу и почитайте, а потом почитайте теорию по нормализации.
iBird Rose что вы понимаете под бэкендом? Если веб-сервис - то действительно слабосвязанные, если же классический сайт с генерацией контента на сервере - то не такие уж и слабосвязанные.
simply_user так а что об этом читать-то?) Контролы WPF могут привязываться почти к чему угодно. Однако, чтобы они ловили изменения свойств привязанного объекта, нужно чтобы этот объект реализовывал INotifyPropertyChanged. По аналогии, коллекции должны реализовывать INotifyCollectionChanged. Всё. Все остальное - это уже программисту решать. Можно следовать паттерну MVVM до конца, можно где-то его нарушать - например, в случае неизменяемого объекта ИМХО это допустимо. Что называть моделью и вьюмоделью - это вам решать. Под "гибридом" я понимаю тот случай, когда вы не вводите отдельные классы для модели и для вьюмодели, а используете саму модель в привязке, и не более того.
simply_user можно конечно, только, очевидно, модель должна быть иммутабельной. Иначе придётся реализовывать INotifyPropertyChanged, что автоматически превратит модель в гибрид модели и вьюмодели.
simply_user всё, я наконец понял что вы имеете в виду, это коллекция файлов. Я почему-то подумал, что коллекцией вы называете список свойств ОДНОГО конкретного файла.
BadCats у вас тут живая дискуссия, не успел ответить)
Под "интерфейсом" здесь я понимаю НЕ интерфейс в терминах языка C# (которые interface), а "интерфейс" в широком смысле - т.е. некоторый контракт между сущностью и её пользователем.
Под интерфейсом к полю/делегату я понимаю пары методов, которые сгенерирует вам компилятор, когда вы напишете свойство или событие. Свойство это по сути синтаксический сахар, который превращается в пару методов get_ИмяСвойства и set_ИмяСвойства, плюс еще добавляется метаинформация о том, что эта пара методов - это свойство (чтобы отличить такую ситуацию от ситуации, когда вы сами напишите в коде два таких метода). Реализуя свойство, вы можете пользоваться (а можете и НЕ пользоваться) некоторым полем, чтобы хранить в нём значение свойства как есть, или в каком-то преобразованном виде. Код внутри get/set - это, условно говоря, преобразование между значением поля и значением свойства. Также, начиная с C# 3.0 вы можете создавать автосвойства с помощью синтаксиса {get; set; }, и компилятор автоматически сгенерирует вам поле для хранения значения.
Аналогичная ситуация с событиями. Тот синтаксис, что вы привели в вопросе ( public event EventDelegate myEvent = null; ) - это аналог автосвойства - делегат и событие к нему у вас объявлены одновременно. Однако вы можете воспользоваться и таким синтаксисом: https://msdn.microsoft.com/en-us/library/bb882534.aspx - это всё равно что явно реализовать get { .... } и set { .... } для свойства, не используя автогенерацию.
Oxoron самое главное-то не сказал) Можно принюгеть в примеры, но тогда вам (и тому, кто скачает исходники библиотеки) будет сложнее модифицировать библиотеку, т.к. примеры будут запускаться с релизной версией библиотеки из Нюгета. Так что как по мне лучше примеры (и тем более - тесты, иначе в них нет смысла) линковать к основному проекту/проектам в "src" через обычные проектные зависимости, которые управляются Студией. Я обычно собираю всё в один солюшен, и просто ставлю зависимости.
den11770 тогда проверьте, что у ВАС стоит наиболее свежая версия версия нужного вам райнтайма (наиболее свежая в рамках одной версии тулсета, т.е. версия именно 10-го рантайма), и возьмите его из своей системы (оттуда, откуда показывает DepWalk), положите рядом с exe и так и распространяйте. Убедитесь, что после того, как вы положите dll-ку рядом с exe, DepWalk будет подтягивать именно её при поиске зависимостей. Это будет доп. гарантией того, что и Винда на целевом компьютере также подтянет именно рядом лежащую dll.
Oxoron стандартная структура репы для проектов на C#/F#, которой я сейчас стараюсь придерживаться:
/docs - документация
/examples - проекты/проект с примерами использования библиотеки. Либо один проект с несколькими файлами кода, если примеры простые, либо, если примеры достаточно объемные, отдельные проекты в подпапках
/src - основной исходный код, "мясо" библиотеки. Также подпапки для проектов.
/tests - тесты, структура аналогична примерам.
Обратите внимание, что если тесты - это скорее для разработчиков библиотеки, и тех, кто уже хорошо с ней знаком и интересуется деталями и качеством реализации, то примеры - это эдакая презентация библиотеки. Если в тестах вы должны добиваться максимального покрытия, то примеры должны показывать наиболее частые и/или наиболее интересные юзкейсы для вашей библиотеки. Начиная с самых простых, по которым можно оценить, насколько просто начать работать с библиотекой, заканчивая наиболее хитрыми, где показываются достоинства вашего решения. Можно сравнить с другими реализациями, если таковые есть.
k-2 я прекрасно понимаю зачем нужен EAV конкретно вам, и зачем он нужен в принципе. Более того, я год назад уже отвечал на такой же вопрос: Как спроектировать базу данных? . И вот еще на один подобный Как добавить товар в корзину? . Я вам говорю, что если вы еще в начале проекта, то возможно стоит принять решение использовать для характеристик о товарах документную базу. Если это невозможно, то вы нагуглите массу информации по EAV.
Или вот например, статья Эдгара Кодда от 1970 года, в которой впервые предлагается реляционная модель данных, без которой сейчас ни один банк и большинство веб-сайтов жизни не представляют: dl.acm.org/citation.cfm?id=362384.362685 (PDF: www.seas.upenn.edu/~zives/03f/cis550/codd.pdf ). Гора книг о реляционной модели была написана позднее, но в 1970 году это было предложено впервые.
Ну или вот, если вы далеки от БД, пара статей о Fickle - исследовательском языке программирования, в котором делается попытка внедрить понятие переклассификации объектов:
link.springer.com/chapter/10.1007%2F3-540-45337-7_8
dl.acm.org/citation.cfm?id=1216381
Или вот любопытная статья от ребят из ЮФУ по обработке изображений: cyberleninka.ru/article/n/novyy-metod-vychisleniya...