public ParentIocContainerWrapper(IIocContainer container, ParentIocContainerWrapper parent = null) : this(false, parent) { _parentContainer = container.CreateChild(); _iocContainer = container; _iocContainer.Disposed += ContainerOnDisposed; }
/// <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; }
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; }