今回は、じんぐるさんとバリデーションまわりを色々検討した結果、過去のIDataErrorInfoクラスを実装していた時のしがらみを決して、ちょっと非互換がある変更をしています。
まずは、ObserveErrorChangedメソッドのシグネチャが変わってます。INotifyErrorInforを実装しているだけなので、エラー情報は必ずIEとして流れてくるので、objectからIEに変更しました。
public interface IReactiveProperty { object Value { get; set; } - IObservable<object> ObserveErrorChanged { get; } + IObservable<IEnumerable> ObserveErrorChanged { get; } }
今まで、このObserveErrorChangedにstring自体が流れてくることがありましたが、今回の変更でIE
// before var errorProperty = hoge.ObserveErrorChanged.OfType<string>().ToReactiveProperty(); // after var errorProperty = hoge.ObserveErrorChanged.Select(x => x == null ? null : x.OfType<string>().FirstOrDefault()).ToReactiveProperty();
ちょっとめんどくさくなってしまいましたが、本来IEで複数のエラーを返すところをstringがIEを実装しているからとstringをそのまま流してたのが悪かったです。はい。
ということでDLなどは以下からできます。