若干年前,老周寫了幾篇有關(guān)MEF的爛文,簡單地說,MEF是一種動(dòng)態(tài)擴(kuò)展技術(shù),比如可以指定以某個(gè)程序集或某個(gè)目錄為搜索范圍,應(yīng)用程序在運(yùn)行時(shí)會(huì)自動(dòng)搜索符合條件的類型,并自動(dòng)完成導(dǎo)入,這樣做的好處是,主程序的代碼不用改來改去,只需要把擴(kuò)展的程序集放到對應(yīng)的目錄下就可以了。
MEF不僅可以用于“看不見”的類型擴(kuò)展上,對于“看得見”的類型照樣適用,比如窗口、控件之屬,你要是夠牛逼的話,甚至可以把它用到ASP.NET上,不過這個(gè)玩意兒估計(jì)要配合重寫路由規(guī)則才能實(shí)現(xiàn),根據(jù)URL傳的參數(shù)來跳轉(zhuǎn)到具體的頁面。
較為簡單的,像Windows Forms中的窗口,WPF中的窗口或控件,就可以直接運(yùn)用MEF來完成擴(kuò)展,主應(yīng)用程序界面可以動(dòng)態(tài)生成菜單項(xiàng)或按鈕來打開窗口就可以了。而各個(gè)窗口的實(shí)現(xiàn)代碼可以寫在一個(gè)類庫項(xiàng)目中。
下面,咱們用一個(gè)實(shí)實(shí)在在的例子來說明一下。
新建一個(gè)類庫項(xiàng)目,然后在里面做三個(gè)WPF窗口,XAML文檔如何與代碼類關(guān)聯(lián),這個(gè)不要問我,問MSDN姐姐去。
因?yàn)檫@是做測試,窗口的UI布局你可以隨便設(shè)計(jì)。
給大家一