main
 1using Gorilla.Commons.Infrastructure.Container;
 2using gorilla.commons.utility;
 3using MoMoney.Presentation.Core;
 4using MoMoney.Presentation.Model.reporting;
 5using MoMoney.Presentation.Views;
 6
 7namespace MoMoney.Presentation.Presenters
 8{
 9    public interface IReportPresenter<Report, T, Query> : IContentPresenter
10        where Report : IBindReportTo<T, Query>
11        where Query : Query<T> {}
12
13    public class ReportPresenter<Report, T, Query> : ContentPresenter<IReportViewer>, IReportPresenter<Report, T, Query>
14        where Report : IBindReportTo<T, Query>
15        where Query : Query<T>
16    {
17        readonly DependencyRegistry registry;
18
19        public ReportPresenter(IReportViewer view, DependencyRegistry registry) : base(view)
20        {
21            this.registry = registry;
22        }
23
24        public override void run()
25        {
26            var report = registry.get_a<Report>();
27            report.run(registry.get_a<Query>().fetch());
28            view.display(report);
29        }
30    }
31}