main
 1namespace presentation.windows
 2{
 3    public interface UICommand
 4    {
 5        void run<T>(T presenter) where T : Presenter;
 6    }
 7
 8    public abstract class UICommand<T> : UICommand where T : class, Presenter
 9    {
10        void UICommand.run<T1>(T1 presenter)
11        {
12            run(presenter as T);
13        }
14
15        protected abstract void run(T presenter);
16    }
17}