Как стать автором
Обновить

Комментарии 7

1) Прекращайте истереть и используйте Fody/PropertyChanged. Минус — это AOP (например, не поставить брэкпоинт, хотя это нужно крайне редко). Плюс — автоматические вычислимые свойства.

2) Для борьбы с чистотой кода можно вместо каждого нотифицируемого свойства использовать Prism/ObservableObject или runceel/ReactiveProperty. Биндиться придется к *.Value, c поддержкой вычислимых свойств тоже придется повозится, но зато на каждое свойство уникальное событие — не надо работать со строками.

3) Мы в одном проекте использовали шаблоны Visual Studio T4. Можно написать шаблон, который по основному классу будет генерировать во время написания кода partial-составляющую с нужными уведомлениями и прочим. Очень гибкое решение, можно много чего так реализовать. Из минусов — привязка к конкретной студии разработки.
Истерики нет, меня вполне устраивает класические OnPropertyChanged через expression,
например, не поставить брэкпоинт
при написании IInterceptionBehavior это не проблема.
У ObservableObject интересная наследственность System.Windows.FrameworkElement<-Microsoft.Practices.Prism.ObservableObject + странный биндинг, не уверен что это чистый код. Автоген это конечно круто, а чем вынос дыма в partial лучше наследования или композиции?
Я в простых случаях пользуюсь https://www.nuget.org/packages/KindOfMagic/ и забыл об этой проблеме (чуть подробнее — https://kindofmagic.codeplex.com/)
[Magic] — он самый
1) KindOfMagic build task runs just after compilation.
не использовал, но наслышан, а на сколько замедляет сборку приложения?
Практически незаметно. Рекомендую попробовать
В своё время, делали так:
public static Boolean Set(this INotifyPropertyChangedEx o, ref T property, T value, [CallerMemberName] String propertyName = null)
{
if (Equals(property, value))
{
return false;
}

property = value;
o.NotifyOfPropertyChange(propertyName);

return true;
}

использовали:
public bool IsLoading
{
get { return _isLoading; }
set { this.Set(ref _isLoading, value); }
}

Вкупе со сниппетом довольно удобно. Плохой момент в том, что INotifyPropertyChangedEx из пакета Caliburn.Micro (но несложнен в реализации)
видимо аналог SetProperty(ref storage, value)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории