天天看點

C# WPF Caliburn.Micro架構下利用Mef加載其它項目界面

01

前言

    MEF是微軟自家的托管可擴充架構,在這裡我把它用成了ioc容器。在Caliburn.Micro架構下,view和viewmodel被注入到CompositionContainer容器中,然後通過名稱可以實作view和viewmodel的比對。利用這一特點,在多人合作項目開發中,一個解決方法就可以拆分成很多個項目,隻用在主項目中搭建架構,每個分支項目開發好以後加載到容器中,就可以實作界面和邏輯的調用,可能這樣解釋有點生澀,具體我們看下面執行個體再去了解。

02

建立項目MefTest

第一步 :在我們的解決方法下添加新的項目MefTest(類庫)

C# WPF Caliburn.Micro架構下利用Mef加載其它項目界面

第二步:MefTest下添加MefTestView.xaml和MefTestViewModel.cs

MefTestViewModel:

[Export(typeof(MefTestViewModel))] 一般是繼承公共的接口并導出,當然像我這樣直接導出也是可以的.

  MefTestView.xaml:

  

03

通過Mef注入dll

詳細代碼如下:

  這裡也可以讓主界面的viewmodel繼承一個公共的接口,比如IShell,這樣這裡接可以改寫為:

04

主程式加載和調用

StartView.xaml中添加一個tab頁:

viewmodel中:

定義 MefTestViewModel

  然後在主程式的構造函數中通過ioc擷取viewmodel執行個體:

這樣其它項目的界面就成功的被加載到了我們的主項目中,然而我們并沒有執行個體化,這樣如果我們定義了公共的接口,直接導出接口類型,就很好地實作了主項目和子項目的解耦。

05

運作結果

C# WPF Caliburn.Micro架構下利用Mef加載其它項目界面

06

項目源碼

百度網盤:

連結:https://pan.baidu.com/s/11HNocAFoS8Bhpwv0wHeyag

提取碼:點選在看後添加小編微信zls20210502擷取。