示例#1
0
        /*
         * View.
         */

        public void OnViewAdd(IView view)
        {
            if (_mediators.ContainsKey(view))
            {
                throw new MediationException(MediationExceptionType.ViewInstanceAlreadyAdded, view.GetType().FullName);
            }

            if (!_bindings.TryGetValue(view.GetType(), out var binding) && _mode == MediationMode.Strict)
            {
                throw new MediationException(MediationExceptionType.MediationBindingNotFound, view.GetType().FullName);
            }

            _injectionBinder.Construct(view, true);

            if (TryCreateMediator(binding, out var mediator))
            {
                view.SetMediator(mediator);
                InjectViewAndDependencies(binding, mediator, view, true);
            }

            _mediators.Add(view, mediator);
        }