Сегодня я хочу поговорить об автоматической генерации кода C#. Например, свойства в классах, описывающих сущности предметной области, обычно описываются по совершенно одинаковой схеме. И мне элементарно лениво писать для каждого примитивного свойства одинаковые конструкции. Немного спасает применение сниппетов и активных шаблонов, но когда приходит нужда что-то поменять в этой схеме, то приходится перелопачивать кучу кода. Так почему бы это однообразие не генерировать автоматически в процессе сборки?
В какой-то момент кинетическая энергия творчества ненадолго пересилила потенциальную энергию лени, и результатом этого стала маленькая библиотечка для автоматической генерации некоторых исходных файлов программы на основе внешних данных. Приглашаю под кат всех ленивых (в хорошем смысле этого слова) разработчиков на C#.
Проблемы, возникающие при создании программного продукта и пути их решения на личном опыте.
вторник, 17 апреля 2012 г.
Полуавтоматическая генерация кода
суббота, 10 марта 2012 г.
Представление метаданных с помощью перечислений
понедельник, 27 февраля 2012 г.
Не забудьте нажать релиз!
.NET чудесно интегрирована с COM. Разработчик может без лишних усилий, легко и просто загружать и использовать в своих программах COM объекты из других приложений. Но разница в способе управления памятью (сборщик мусора .NET и подсчет ссылок в COM) иногда подкидывает неприятные сюрпризы.
вторник, 31 января 2012 г.
Полезные расширения для работы с папками
Несмотря на стремительное развитие облачных технологий, простому программисту .NET никуда не деться от работы с файловой системой. Благодаря классам из пространства имен System.IO, работа с файлами и папками довольно проста и прозрачна. Но, все таки, некоторые простые (и довольно востребованные) операции требуют заметного количества манипуляций. Предлагаю вашему вниманию несколько методов-расширений для класса DirectoryInfo, которые слегка дополнят возможности по работе с папками.
пятница, 20 января 2012 г.
Расширения для класса FrameworkElement
суббота, 14 января 2012 г.
Что такое искусство программирования?
понедельник, 9 января 2012 г.
Командная разработка
воскресенье, 18 декабря 2011 г.
Упрощаем обработку исключений
Я начинаю серию постов, посвященных разнообразным методам-расширениям, которые немного упрощают жизнь простого разработчика, выполняя рутинную работу. Сегодня я хочу рассказать о расширениях для класса Exception.
пятница, 9 декабря 2011 г.
Использование конвертеров значений в привязках данных WPF
Связывание данных (Data Binding) в WPF – очень мощный (правда, не всегда удобный) механизм. А возможность использование конвертеров дает возможность связывать интерфейс с данными почти любого вида. Несмотря на кажущуюся простоту явления, возможности, открываемые конвертерами, поистине безграничны.
среда, 7 декабря 2011 г.
Дополнительные материалы по использованию слабых ссылок
воскресенье, 4 декабря 2011 г.
"Магия" Linq
четверг, 24 ноября 2011 г.
Анимация времени
При реализации гладкой прокрутки шкалы времени в диаграммах мы с коллегами столкнулись с необходимостью анимировать свойства зависимостей, тип которых DateTime. Но оказалось, что стандартных классов для анимации свойств такого типа не предусмотрено. Сначала мы попробовали использовать класс ObjectAnimationUsingKeyFrames, однако, чтобы анимация выглядела гладко, приходится добавлять много ключевых кадров, а это, в свою очередь, приводило к большому количеству изменений свойства и частым перерисовкам, перерасчетам привязок. В общем, выглядело не очень красиво.
суббота, 19 ноября 2011 г.
Централизованное управление командами в WPF
Когда я был начинающим программистом, то программировал с использованием библиотеки MFC. Мне очень нравилась предлагаемая MFC модель использования команд. Команда – это некоторый идентификатор. С идентификатором команды просто и естественно связываются строка подсказки, метод обработки доступности команды, метод для выполнения действия команды и т.п. Команды объявляются централизовано, обработчики команд не зависят от того, как была вызвана команда – программно, нажатием на кнопку в панели инструментов или через контекстное меню. Все было понятно и логично.
понедельник, 7 ноября 2011 г.
MessageBox + FlowDocument
После того как я познакомился с магией технологии WPF и, в частности, с возможностями отображения потокового содержимого, меня очень удивило отсутствие штатной возможности вывести пользователю простое сообщение с использованием FlowDocument. И, в некоторый момент, я в своем проекте реализовал простейший механизм для отображения таких сообщений.
среда, 2 ноября 2011 г.
Завершаем создание инсталляционного комплекта
После того как все файлы инсталлятора упакованы в один файл и UAC не задает лишних вопросов при установке, добавим последний завершающих штрих – на последней странице программы установки добавим галочку “Запустить программу”.К сожалению, стандартные средства Setup Project не позволяют это сделать.
пятница, 21 октября 2011 г.
Обновление манифеста приложения с командной строки
среда, 19 октября 2011 г.
Продолжаем создание инсталляционного комплекта
В прошлом посте я начал тему создания инсталляционного комплекта. Один из вопросов, который остался нераскрытым:
Ожидание завершения всех процессов, запущенных из программы установки.
Это должна быть простая программа, которая не требует установки дополнительных компонентов, поэтому язык C# не подходит (на компьютере может отсутствовать .NET Framework). Я выбрал для её реализации С++ с использованием статической библиотеки STL.
понедельник, 10 октября 2011 г.
Создание средствами Microsoft установочного комплекта для публикации в Web
- Использовать для сборки другое средство создания установочного комплекта.
- Заархивировать все файлы комплекта (например, с помощью ZIP) и опубликовать на сайте полученный архив.
- Превратить полученный установочный комплект в самораспаковывающийся архив, автоматически запускающий установку программы.
среда, 5 октября 2011 г.
Конвертер для получения пути к файлу из пути к папке и имени
Некоторое время назад передо мной возникла простая задача: вывести в текстовом поле полный путь к файлу, при том что в модели он был представлен двумя свойствами: путь к папке с файлом и имя файла. Разделение на два поля в модели было важным с архитектурной точки зрения, заводить дополнительное свойство для их объединения не хотелось. Объединить их требовалось только для отображения пользователю.
пятница, 30 сентября 2011 г.
Как в WPF приложении отобразить иконку файла
Некоторое время назад передо мной возникла задача отобразить в приложении иконку файла. Быстро было найдено решение – использовать функцию CreateBitmapSourceFromHIcon. Однако в рамках паттерна MVVM непосредственное использование функции было неудобно. Простенький конвертер, преобразующий путь к файлу в его иконку, делает удобным размещение иконки файла непосредственно в XAML.