public IObservable <T> Open <T>(DialogModel <T> dialogModel)
        {
            var contextType = dialogModel.GetType();
            var windowType  = _dialogProvider.GetWindowType(contextType);

            return(Dispatcher.UIThread.InvokeAsync(() =>
            {
                var topWindow = GetTopWindow();

                var dialogWindow = (Window)Activator.CreateInstance(windowType);
                dialogWindow.DataContext = dialogModel;

                // HACK: https://github.com/AvaloniaUI/Avalonia/issues/2774
                if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
                {
                    CenterDialog(dialogWindow, topWindow);
                }

                return dialogWindow.ShowDialog(topWindow);
            })
                   .ToObservable()
                   .SelectMany(_ => dialogModel.GetResult()));
        }