private IEnumerable <IView> GetViews(PresenterBindingParameter binding) { Debug.Assert(binding != null); IEnumerable <IView> views; switch (binding.BindingMode) { case PresenterBindingMode.Default: views = binding.Views; break; case PresenterBindingMode.SharedPresenter: views = new[] { _compositeViewFactory.Create(binding.ViewType, binding.Views) }; break; default: throw new ControlFlowException(); } return(views); }
protected IPresenter CreatePresenter(PresenterBindingParameter binding, IView view) { Require.NotNull(binding, nameof(binding)); var presenter = _presenterFactory.Create(binding.PresenterType, binding.ViewType, view); if (presenter == null) { return(null); } // TODO: Explain this. ((Internal.IPresenter)presenter).Messages = _messageCoordinator; OnPresenterCreated(new PresenterEventArgs(presenter)); return(presenter); }
public PresenterDiscoveryResult FindBindings(IEnumerable <object> hosts, IEnumerable <IView> views) { Require.NotNull(views, nameof(views)); var boundViews = new List <IView>(); var bindings = new List <PresenterBindingParameter>(); foreach (var view in views) { if (view == null) { continue; } var viewType = view.GetType(); var presenterType = _typeResolver.Resolve(viewType); if (presenterType != null) { Trace.TraceInformation( "[PresenterDiscoveryStrategy] Found presenter '{0}' for view '{1}'.", presenterType.FullName, viewType.FullName); var binding = new PresenterBindingParameter( presenterType, viewType, PresenterBindingMode.Default, new[] { view }); bindings.Add(binding); boundViews.Add(view); } else { Trace.TraceInformation( "[PresenterDiscoveryStrategy] No presenter found for view '{0}'", viewType.FullName); } } return(new PresenterDiscoveryResult(boundViews, bindings)); }