public static void InjectOrNavigate(this IModuleManager manager, string regionName, string key, object parameter = null)
 {
     Verifier.VerifyManager(manager);
     if (manager.GetModule(regionName, key) == null)
     {
         ModuleInjectionException.ModuleMissing(regionName, key);
     }
     if (!manager.IsInjected(regionName, key))
     {
         manager.Inject(regionName, key, parameter);
     }
     manager.Navigate(regionName, key);
 }
        protected IModule GetModule(string regionName, string key, bool throwIfNull)
        {
            Verifier.VerifyRegionName(regionName);
            Verifier.VerifyKey(key);
            var res = modules.FirstOrDefault(x => x.RegionName == regionName && x.Module.Key == key)
                      .With(x => x.Module);

            if (res == null && throwIfNull)
            {
                ModuleInjectionException.ModuleMissing(regionName, key);
            }
            return(res);
        }
        public static Task <WindowInjectionResult> ShowOrActivate(this IModuleWindowManager manager, string regionName, string key, object parameter = null)
        {
            Verifier.VerifyManager(manager);
            if (manager.GetModule(regionName, key) == null)
            {
                ModuleInjectionException.ModuleMissing(regionName, key);
            }
            if (!manager.IsShown(regionName, key))
            {
                return(manager.Show(regionName, key, parameter));
            }
            var res = ((IModuleManagerImplementation)manager).GetWindowInjectionResult(regionName, key);

            manager.Activate(regionName, key);
            return(res);
        }