суббота, 16 февраля 2008 г.

Упростить выражение в OnTypedInit

Теперь у нас типизированный sender, поэтому, скорее всего, получится сделать так, чтобы можно было писать более кратко
binder.Add(() => sender.Text, x => x.Name);
вместо
iderBinder.Add(sender).Add(x => x.Text, x => x.Name);
Предполагается это сделать через проход по Expression, чтобы выделить sender. Конечно, это накладывает сильные ограничения на используемые лямбда-выражения. Проверка допустимости лямбда-выражения будет осуществляться, естественно, только в рантайме, это недостаток. Но на это можно пойти из-за упрощения синтаксиса часто используемых выражений.

Новая версия

Выкладываю новую версию.

Теперь в OnInit-е не надо кастить sender
((TextBox)sender)...
Поробнее см. в ответе на сообщение krasin-у.

Введено свойство DataFunc. Теперь экземпляр объекта с данными передается через DataFunc вместо аргументов методов ToModel, FromModel. Перерь можно выделить отдельный интерфейс с методами
ToModel();
FromModel();
Этот интерфейс не будет иметь generic параметра TData. Это позволит писать классы, которые будут вызывать байндинг, без параметра TData.

P.S. Надо позаботится о более удобном хранении версий, чем блог ;)