mef,全稱是managed extensibility framework。它是.net framework4.0的乙個類庫,其主要目的是為了建立可擴充套件的應用程式。按照官方說法就是「用於簡化在部署後可由第三方進行擴充套件的可組合系統的設 計。mef 可使您的應用程式具有開放性,從而允許應用程式開發人員、框架編寫者以及第三方擴充套件程式不斷引入新功能」;
1)第一步,定義匯出export。
指定程式通過相應的契約進行通訊。可以有多個通訊契約。而且通訊契約可以是任何乙個類。例如
1
2
3
4
5
6
7
8
9
10
[export(
typeof
(imeffirst))]
[export(
typeof
(form))]
[exportmetadata(
"name"
,
"formmeftest1"
)]
public
partial
class
formmeftest1 : form, imeffirst
public
string
controltitle }
}
這裡面。imeffirst是只定義的乙個介面,其定義相當的簡單
1
2
3
public
inte***ce
imeffirst
}
而form則是窗體預設繼承的父類。而exportmetadata則是元資料,可以是一些對部件的描述。
2)第二步,定義匯入import
指出匯出的位置。一般情況下,寫法如下
1
[import]
public
imeffirst imeffirstimportedmainformcontract
如果有很多個部件需要匯入,則必須用importmany,實現多個載入
1
[importmany]
public
lazy> importedmainformcontracts
12
3
4
5
6
7
8
9
10
11
12
13
14
foreach
(
var
export
in
this
.importedmainformcontracts)
if
(menutitle == thisitemtitle)
frm.show(
this
);
return
;
}
}
export.metadata["name"],這種寫法就是因為其前面我們這樣定義元資料檢視:idictionary3)第三步,使用
首先,通過下面這段方法,實現對newcontainer的例項化。下面這個方法實現的功能是從指定目錄下匯入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private
compositioncontainer newcontainer;
///
/// 載入指定路徑的dll,並返回compositioncontainer
///
/// dll路徑
///
private
compositioncontainer getnewcontainer(
string
strpath)
而後,通過
newcontainer.composeparts(
this
);
這個語句實現對前面指定的[importmany] 處importedmainformcontracts 的賦值。managed extensibility framework 概述
託管可擴充套件性框架
MEF簡單學習筆記
首先,最基本的還是先要知道mef是撒,他是幹嘛用的 1 mef 全稱managed extensibility framework 託管可擴充套件框架 2 msdn上說明 managed extensibility framework 或 mef 是乙個用於建立可擴充套件的輕型應用程式的庫。應用程式...
今日z學習
7月9日 知識點總結 1.easeui 利用easerui 實現登陸註冊功能 具體如下 登陸 private void getdenglu else if textutils.isempty mima else override public void onprogress int progress...
小z的襪子題後小結
description 作為乙個生活散漫的人,小z每天早上都要耗費很久從一堆五顏六色的襪子中找出一雙來穿。終於有一天,小z再也無法忍受這惱人的找襪子過程,於是他決定聽天由命 具體來說,小z把這n只襪子從1到n編號,然後從編號l到r l 儘管小z並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否...