Catel (MVVM框架)[AS]没有返回正确的程序集名称

本文关键字:返回 程序集 框架 MVVM AS Catel | 更新日期: 2023-09-27 18:10:31

我正在尝试理解Catel框架。

我知道Catel有一个命名约定来注册视图和视图模型。根据文档[AS]约定,应该用程序集名称替换。这不是我的情况,我必须手动编写程序集名称如下:

string aSSname = Assembly.GetExecutingAssembly().GetName().Name;
var viewLocator = serviceLocator.ResolveType<IViewLocator>();
viewLocator.NamingConventions.Add(aSSname + ".Views.[VM]Window");

下面的代码不能为我工作:

viewLocator.NamingConventions.Add("[AS]"+ ".Views.[VM]Window");

更多信息(如果它帮助):

以上所有代码都放在App.xaml.cs

我将viewModel加载为单独的程序集:

 AppDomain.CurrentDomain.PreloadAssemblies(typeof (App).Assembly.GetDirectory());

综上所述,我如何使这个例子与[AS]惯例一起工作。

我的猜测:

我的猜测是viewLocator正在寻找错误的程序集。可能正在查看与viewModels相同的程序集

如果这是正确的,我如何更改viewLocator以便它在正确的汇编中搜索?

Catel (MVVM框架)[AS]没有返回正确的程序集名称

Catel只能知道用于解析视图的类型的[AS]。所以如果你在MyProject的类型中使用[AS]。视图程序集,则无法解析MyProject中的视图模型。视图模型组装。

在这种情况下,你必须简单地指定命名约定与预期的程序集名称(如MyProject.Views.[VM]View

)

你也可以通过使用反射和解析所有包含. views的命名空间来动态地完成这个任务。