В статье ранее я писал как сделать автоматическую реализацию INotifyPropertyChanged на основе расширений библиотеки NInject. К сожалению, моя жизнь с этой библиотекой не сложилась, NInject был заменен на Spring.NET. При этом схему автореализации надо было как-то перенести без особенных изменений прикладного кода. Объясню, что именно я сделал.
Читать далее…
При разработке для платформы .NET часто приходится делать так раздражающие всех реализации интерфейса INotifyPropertyChanged на классах-моделях. Типичный пример выглядит так:
class StatisticsRecord: INotifyPropertyChanged
{
private string name;
public string Name { get { return name; } set { name = value; NotifyPropertyChanged("Name"); } }
private void NotifyPropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
public event PropertyChangedEventHandler PropertyChanged;
}
На мой взгляд, с этим кодом есть 2 проблемы:
- Очень много повторений и кода вызванного необходимостью вызвать
NotifyPropertyChanged. Увеличивается количество «тупой» работы.
- Использование строковой константы Name в качестве аргумента. Рефакторинг может привести к разрушению биндинга к такому свойству.
Читать далее…
В начале создания авто-тестов в одном проекте на C# начал возникать System.BadImageFormatException при попытке запуска тестов из ReSharper. Выяснение показало, что проблема была в том, что сборка с тестами имела Any CPU. А тестируемые классы были в EXE, который был собран в x86. При этом Windows используется 64х битный, следовательно Any CPU = x64.
Решение просто – указать в тестовой сборке целевую платформу x86. Это делается в закладке Build свойств проекта тестовой сборки.
После установки ReSharper на Visual Studio 2010 (всем разработчикам на C# рекоммендую, кста) наиболее активно разражает подсвечивание названий методов, который автоматически генерируются Visual Designer для обработки событий, поскольку название типа «Form1_Load» никак не соответствует идеям начинать название с глагола и не использовать «_». Но это можно исправить.
Читать далее…
Для разработки парсеров искусственых языков (ИЯ) часто используются различные инструменты генерации. Один из таких инструментов – ANTLR. Я использовал ANTLR в одном из проектов для разбора 2 специальных ИЯ. Проект делался на C# в среде VS.NET 2008. Среда ANTLRWorks являлась хоть и работающим, но очень неудобным решением.
Читать далее…
Свежие комментарии