public virtual void OpenViewModel <TParameters>(TParameters parameters, Action closedCallback) { var parametersType = parameters.GetType(); var upbeatViewModelService = new UpbeatService(_updateOnRender, OpenViewModel, closedCallback); using (var d = new UpbeatServiceDeferrer(upbeatViewModelService)) { var viewModel = upbeatViewModelService.Activate( service => _viewModelInstantiators[parametersType](service, parameters), vm => _openViewModels.Last() == vm, async vm => await TryRemoveViewModelAsync(vm)); _openViewModelServices[viewModel] = upbeatViewModelService; _openViewModels.Add(viewModel); } }
public UpbeatServiceDeferrer(UpbeatService configurationService) : base(configurationService.Lock, configurationService.Unlock) { }