main
 1using System;
 2using System.ComponentModel;
 3
 4namespace solidware.financials.windows.ui.views.controls
 5{
 6    public interface Observable<T> : Observable, IDataErrorInfo
 7    {
 8        new T Value { get; set; }
 9        void WhenChanged(Action observer);
10        void Register<Severity>(Func<T, bool> failCondition, Func<string> errorMessage) where Severity : presenters.validation.Severity, new();
11    }
12
13    public interface Observable : INotifyPropertyChanged
14    {
15        object Value { get; }
16    }
17
18    static public class ObservableExtensions
19    {
20        static public void Notify<T>(this Observable<T> observable, ObservableCommand command)
21        {
22            observable.WhenChanged(() => command.notify_observers());
23        }
24    }
25}