Esempio n. 1
0
 public ParentIocContainerWrapper(IIocContainer container, ParentIocContainerWrapper parent = null)
     : this(false, parent)
 {
     _parentContainer        = container.CreateChild();
     _iocContainer           = container;
     _iocContainer.Disposed += ContainerOnDisposed;
 }
Esempio n. 2
0
        /// <summary>
        ///     Creates an instance of <see cref="IocContainer" /> using the specified <see cref="IDataContext"/>.
        /// </summary>
        protected virtual IIocContainer CreateViewModelIocContainer([NotNull] IDataContext dataContext)
        {
            IIocContainer container = dataContext.GetData(InitializationConstants.IocContainer);

            if (container == null)
            {
                IocContainerCreationMode creationMode;
                if (!dataContext.TryGetData(InitializationConstants.IocContainerCreationMode, out creationMode))
                {
                    creationMode = ApplicationSettings.IocContainerCreationMode;
                }
                IViewModel parentViewModel = dataContext.GetData(InitializationConstants.ParentViewModel);
                var        isRestored      = dataContext.GetData(InitializationConstants.IsRestored);
                switch (creationMode)
                {
                case IocContainerCreationMode.ParentViewModel:
                    if (parentViewModel != null)
                    {
                        container = parentViewModel.IocContainer.CreateChild();
                    }
                    else if (isRestored && dataContext.Contains(IdParentViewModelConstant))
                    {
                        container = new ParentIocContainerWrapper(_iocContainer);
                    }
                    break;

                case IocContainerCreationMode.Mixed:
                    var parentContainer = parentViewModel == null ? null : parentViewModel.IocContainer;
                    if (parentContainer != null || (isRestored && dataContext.Contains(IdParentViewModelConstant)))
                    {
                        container = new ParentIocContainerWrapper(_iocContainer, parentContainer);
                    }
                    break;
                }

                if (container == null)
                {
                    container = _iocContainer.CreateChild();
                }
            }
            if (BindIocContainer)
            {
                container.BindToConstant(container);
            }
            return(container);
        }
Esempio n. 3
0
 public ParentIocContainerWrapper(IIocContainer container, IIocContainer parentContainer, ParentIocContainerWrapper parent = null)
     : this(true, parent)
 {
     if (!IsContainerDisposed(parentContainer))
     {
         _parentContainer   = parentContainer.CreateChild();
         _parentInitialized = true;
     }
     _iocContainer = container.CreateChild();
     if (_parentContainer == null)
     {
         _parentContainer = _iocContainer;
     }
     _iocContainer.Disposed += ContainerOnDisposed;
 }
Esempio n. 4
0
 private ParentIocContainerWrapper(bool isMixed, ParentIocContainerWrapper parent)
 {
     _locker  = new object();
     _isMixed = isMixed;
     _parent  = parent;
 }
        /// <summary>
        ///     Creates an instance of <see cref="IocContainer" /> using the specified <see cref="IDataContext"/>.
        /// </summary>
        protected virtual IIocContainer CreateViewModelIocContainer([NotNull] IDataContext dataContext)
        {
            IIocContainer container = dataContext.GetData(InitializationConstants.IocContainer);
            if (container == null)
            {
                IocContainerCreationMode creationMode;
                if (!dataContext.TryGetData(InitializationConstants.IocContainerCreationMode, out creationMode))
                    creationMode = ApplicationSettings.IocContainerCreationMode;
                IViewModel parentViewModel = dataContext.GetData(InitializationConstants.ParentViewModel);
                var isRestored = dataContext.GetData(InitializationConstants.IsRestored);
                switch (creationMode)
                {
                    case IocContainerCreationMode.ParentViewModel:
                        if (parentViewModel != null)
                            container = parentViewModel.IocContainer.CreateChild();
                        else if (isRestored && dataContext.Contains(IdParentViewModelConstant))
                            container = new ParentIocContainerWrapper(_iocContainer);
                        break;
                    case IocContainerCreationMode.Mixed:
                        var parentContainer = parentViewModel == null ? null : parentViewModel.IocContainer;
                        if (parentContainer != null || (isRestored && dataContext.Contains(IdParentViewModelConstant)))
                            container = new ParentIocContainerWrapper(_iocContainer, parentContainer);
                        break;
                }

                if (container == null)
                    container = _iocContainer.CreateChild();
            }
            if (BindIocContainer)
                container.BindToConstant(container);
            return container;
        }
 public ParentIocContainerWrapper(IIocContainer container, IIocContainer parentContainer, ParentIocContainerWrapper parent = null)
     : this(true, parent)
 {
     if (!IsContainerDisposed(parentContainer))
     {
         _parentContainer = parentContainer.CreateChild();
         _parentInitialized = true;
     }
     _iocContainer = container.CreateChild();
     if (_parentContainer == null)
         _parentContainer = _iocContainer;
     _iocContainer.Disposed += ContainerOnDisposed;
 }
 public ParentIocContainerWrapper(IIocContainer container, ParentIocContainerWrapper parent = null)
     : this(false, parent)
 {
     _parentContainer = container.CreateChild();
     _iocContainer = container;
     _iocContainer.Disposed += ContainerOnDisposed;
 }
 private ParentIocContainerWrapper(bool isMixed, ParentIocContainerWrapper parent)
 {
     _locker = new object();
     _isMixed = isMixed;
     _parent = parent;
 }