В случае, если кто-нибудь увидит это позже и будет любопытно, моим конечным решением было полностью избавиться от функции «Регистрация» в пользу твердого соглашения.
Раньше я использовал эту функцию и сохранялсловарь всех зарегистрированных view / viewmodels:
dialogService.Register<ConfirmationWindowViewModel, ConfirmationWindow>();
, это будет регистрировать, сохранять и сохранять их в словаре, чтобы позже я мог передать модель представления и создать экземпляр соответствующего представления сообщения с подтверждением.Вместо этого я удалил весь код, относящийся к этой части решения, и заменил его некоторым отражением, смешанным с соглашениями об именах.
Шаг 1. Убедитесь, что все представления названы с суффиксом View в конце.Шаг 2: Убедитесь, что все модели представления названы с суффиксом ViewModel в конце.Шаг 3: Убедитесь, что все они находятся в пространствах имен с соответствующими именами (представления в пространстве имен представлений и модели представления в пространстве имен представлений).
(большая часть этого ^^ в любом случае выполняется)
Последний шаг: замененный словарьс этим кодом:
var viewTypeName = viewModel.GetType().AssemblyQualifiedName.Replace("Model", "");
var viewType = Type.GetType(viewTypeName);
в диалоговом интерфейсе.Теперь, независимо от того, какая модель представления передается, она будет извлекать соответствующее представление с меньшим количеством кода и без необходимых ссылок, как было сделано ранее.