Блог им. akochurov → PropertyGrid в Visual Studio: отображение полей, связанных с коллекциями объектов
PropertyGrid позволяет отображать разнообразные структуры классов в удобном для редактирования виде и для этого достаточно связать с ним объект вашего класса. Однако, не все конструкции можно сразу отобразить без написания дополнительного кода.
В этой статье я хочу рассказать о своем опыте в использовании PropertyGrid в контексте:
1. Отображение выпадающего списка записей, который собой представляет коллекцию объектов.

2. Отображение поля, связанного с коллекцией объектов, вызывающего редактор коллекции.

В качестве примера я взял задачу для реализации управления информацией о сотруднике, которую реализует класс Employee.
Класс содержит два свойства. Первое — свойство типа JobTitle (должность сотрудника для выпадающего списка), второе – свойство типа JobTitleCollection (коллекция должностей сотрудников для редактора коллекции).
Задачей является отображение объекта класса Employee в PropertyGrid так, как показано на двух рисунках в начале статьи, а именно:
1. Отобразить поле, в котором пользователь сможет выбрать одну из должностей сотрудника с помощью выпадающего списка как в элементе ComboBox.
2. Отобразить поле, которое позволит вызвать редактор связанной коллекции должностей, а после завершения изменения коллекции отобразить должности в PropertyGrid в виде списка.
Решение
В этой статье я хочу рассказать о своем опыте в использовании PropertyGrid в контексте:
1. Отображение выпадающего списка записей, который собой представляет коллекцию объектов.
2. Отображение поля, связанного с коллекцией объектов, вызывающего редактор коллекции.
В качестве примера я взял задачу для реализации управления информацией о сотруднике, которую реализует класс Employee.
Класс содержит два свойства. Первое — свойство типа JobTitle (должность сотрудника для выпадающего списка), второе – свойство типа JobTitleCollection (коллекция должностей сотрудников для редактора коллекции).
Задачей является отображение объекта класса Employee в PropertyGrid так, как показано на двух рисунках в начале статьи, а именно:
1. Отобразить поле, в котором пользователь сможет выбрать одну из должностей сотрудника с помощью выпадающего списка как в элементе ComboBox.
2. Отобразить поле, которое позволит вызвать редактор связанной коллекции должностей, а после завершения изменения коллекции отобразить должности в PropertyGrid в виде списка.
Решение
Блог им. devIceMan → Evernote API — разбираем заголовки статей с Хабра и помечаем статьи метками
Доброго времени суток, уважаемое Хабрасообщество!
В этом коротком топике я хочу рассказать Вам о своем первом знакомстве с Evernote API.
Итак, все началось примерно полгода назад, когда у меня появилось достаточно свободного времени на работе, которое я решил тратить с умом. В основном я, разумеется, читал статьи на Хабрахабре, где и встретил упоминание об Evernote. Сервис мне понравился, я начал им активно пользоваться для сохранения заметок и ссылок на статьи, которые не успевал прочитать на работе. После того, как в свой любимый Хром я установил плагин Evernote Web Clipper, отправлять ссылку на статью в Evernote стало очень просто и быстро. А потом появилось некоторое нудобство…
В этом коротком топике я хочу рассказать Вам о своем первом знакомстве с Evernote API.
Итак, все началось примерно полгода назад, когда у меня появилось достаточно свободного времени на работе, которое я решил тратить с умом. В основном я, разумеется, читал статьи на Хабрахабре, где и встретил упоминание об Evernote. Сервис мне понравился, я начал им активно пользоваться для сохранения заметок и ссылок на статьи, которые не успевал прочитать на работе. После того, как в свой любимый Хром я установил плагин Evernote Web Clipper, отправлять ссылку на статью в Evernote стало очень просто и быстро. А потом появилось некоторое нудобство…
.NET → Скрейпинг сайтов с .Net и WatiN
Рано или поздно у каждого разработчика появится соблазн «скачать» какой-нибудь сайт, либо для того чтобы получить или проанализировать определенный контент, либо просто доказать себе что это в его (её) силах. На самом деле, получить доступ к HTML определенного сайта просто, но проблемы начинаются тогда, когда сайт требует авторизации или содержит контент в виде картинки (например капчу или текст). В этом посте я расскажу какими методами я получаю контент с сайтов и что я с ним делаю.
.NET → C# Zen Coding уже на F#
В моем предыдущем посте, где я описал идею CSharpZen, я пообещал две вещи – дописать расширение для Visual Studio 2010, а также записать вебкаст того, как это можно использовать. Но пока я дописывал код для трансформатора, мне снова показалось что код может стать более понятным если его переписать на F#. И понеслось…
Game Development → Unity3D + C#, или как переводить скрипты

На Unity3D я натолкнулся сравнительно недавно, до этого работал со своими самописными движками для мобильных телефонов на Java2ME, в остальное время я — дотнетчик.
При переходе на новую платформу я в первую очередь выискивал для себя уже готовую технологическую платформу, и основными критериями для меня были цена (доступная/оправданная) и по возможности — мультиплатформенность, чтобы единожды написанный код можно было использовать вновь и вновь без конвертаций. Почти сразу я наткнулся на Unity.
Про Unity в целом тут уже писали, так что повторяться не буду, отмечу главное — разрабатываемую игру можно (а на мой взгляд — и нужно) скриптовать на C# (спасибо Mono). Единственное ограничение — следует писать в пределах .NET Framework 1.1 — только он поддерживается на iPhone. [upd: пока я писал этот пост, вышла новая версия Unity3D для iPhone, поддерживающий .NET 2.1]
Итак, ключевые плюсы для меня от использования Unity вообще и C# в частности:
- Использование .NET Framework и C# (лично для меня это очень удобно)
- Возможность сделать сборку сразу на iPhone и для веб-плеера (standalone сборки меня не прельщают по ряду причин, выходящих за рамки поста)
- Уже готовые сценарии поведения на C# можно будет повторно использовать, например, при создании порта игры на XBox при помощи XNA (с изменениями, но все же)
- Удобный интерфейс и не слишком прожорливые редакторы
- Приемлимая цена
Минусы конечно, также имеются, но речь не за них, ибо плюсы в конечном счете перевесили.
Для скриптования используется прикрученный редактор UniSciTE на базе Scintilla, что лично мне пришлось не по душе, а потому я сразу захотел воспользоваться старой доброй Visual Studio. Вот о том, как скриптовать на C# будет речь ниже:
[upd: перенесено в Game Development]
C++ → "\" в конце строки в C/C++
Покажет ли ваш редактор/IDE, что «a++;» в этом C/C++ коде — часть комментария?
А такой вариант?
int a=1;
//some comment \
a++;
printf("%d\n",a);А такой вариант?
int a=1;
//some comment ??/
a++;
printf("%d\n",a);
.NET → Сокращенный генератор C# в стиле Zen Coding
Уверен что много разработчиков слышали про такую вещь как Zen Coding. Если нет — скажу лишь что это методика очень быстро верстать HTML. Лично я ее использую и безумно доволен. (Все мои статьи написаны через zen coding, многие используют лично написанные расширения.) Так вот, пришла идея сделать то же самое на C#. Поэтому давайте потеоретизируем и подумаем, можно ли сделать Zen Coding для C#.
Разработка под Mac OS X и iPhone → Mono, MonoTouch + C# vs. iPhone SDK + Objective-C
Так сложилось, что моя деятельность в качестве разработчика программного обеспечения связана как с iPhone, так и с .NET технологиями. Если говорить, что первично, то это, конечно, .NET и C#, поэтому информация будет подана с точки зрения дотнетчика.
В статье хочу рассказать о небольшем опыте разработки одного проекта одновременно на mono с использованием MonoTouch и на родном Objective-C.
В статье хочу рассказать о небольшем опыте разработки одного проекта одновременно на mono с использованием MonoTouch и на родном Objective-C.
.NET → Тестирование NHibernate приложений на примере MbUnit
Несколько раз встречал подобный вопрос: как тестировать приложения, использующие ORM NHibernate, точнее встречал проблемы с тестированием на форумах GotDotNet.
NHibernate предоставляет нам несколько возможностей хранить конфигурацию. Одна из таких возможностей – это конфигурировать все на лету, а именно в коде приложения. В этом случае мы можем создать свой класс Configuration, отнаследовать его от класса Configuration NHibernate и внести необходимую логику по конфигурации приложения…
NHibernate предоставляет нам несколько возможностей хранить конфигурацию. Одна из таких возможностей – это конфигурировать все на лету, а именно в коде приложения. В этом случае мы можем создать свой класс Configuration, отнаследовать его от класса Configuration NHibernate и внести необходимую логику по конфигурации приложения…
Блог им. Ogoun → Использование SynchronizationContext для асинхронного выполнения методов
В процессе разработки собственного программного продукта у меня возникла задача выполнения второстепенных функций в дополнительных потоках, дабы не тормозить основной. Казалось бы задача проще некуда, но дополнительным условием стояла задача возврата результата выполнения в основной поток, путем вызова в нем указанного метода, который по идее должен обработать результат.
Поиск по инету выдал в первую очередь примеры использования Invoke, вещь хорошая, простая, но не подошедшая к задаче, чтобы использовать Invoke, мы привязываемся не к конкретному потоку, а к классу контрола. Соответственно в случае консольного приложения придется поизвращаться, а в случае ASP.NET приложения способ вообще отпадает. И так как очень хотелось все-таки найти универсальное решение, то поиск продолжился и выдал мне такую замечательную вещь как SynchronizationContext.
Задача кстати состоит в следующем, написать дополнение к существующей прослойке к базе данных, которое позволит ставить запросы в очередь, исполнять их в потоке и возвращать результат выполнения.
Поиск по инету выдал в первую очередь примеры использования Invoke, вещь хорошая, простая, но не подошедшая к задаче, чтобы использовать Invoke, мы привязываемся не к конкретному потоку, а к классу контрола. Соответственно в случае консольного приложения придется поизвращаться, а в случае ASP.NET приложения способ вообще отпадает. И так как очень хотелось все-таки найти универсальное решение, то поиск продолжился и выдал мне такую замечательную вещь как SynchronizationContext.
Задача кстати состоит в следующем, написать дополнение к существующей прослойке к базе данных, которое позволит ставить запросы в очередь, исполнять их в потоке и возвращать результат выполнения.