示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }