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只能知道用于解析视图的类型的[AS]。所以如果你在MyProject的类型中使用[AS]。视图程序集,则无法解析MyProject中的视图模型。视图模型组装。
在这种情况下,你必须简单地指定命名约定与预期的程序集名称(如MyProject.Views.[VM]View
)你也可以通过使用反射和解析所有包含. views的命名空间来动态地完成这个任务。