2013-04-23 86 views
0

我嘗試,並試圖瞭解Catel框架。Catel(MVVM框架)[AS]不返回正確的程序集名稱

據我所知,Catel有一個命名約定,以註冊的意見和的ViewModels。 根據文檔[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

我加載視圖模型作爲單獨的組件:

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

總結一下,我怎樣才能使這個例子與[AS]公約的工作。

我的猜測:

我的猜測是,viewLocator是找錯了組裝。 可能在同一個程序集中查看viewModels。

,如果這是正確的,我怎麼可以改變viewLocator所以它在正確的裝配搜索?

回答

1

Catel只能知道這是用來解決該視圖的類型的[AS]。因此,如果您在MyProject.Views程序集的類型中使用[AS],則無法解析MyProject.ViewModels程序集中的視圖模型。

在這種情況下,你必須只需指定與預期組件名稱(如MyProject.Views的命名約定。[VM]查看

您還可以通過使用反射和解決它包含了所有的命名空間做自己動態.Views之處在於,在Catel的TypeCache的程序集。