MEF學習小結 z

2021-09-06 14:43:23 字數 3292 閱讀 5859

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")]

publicpartialclassformmeftest1 : form, imeffirst

publicstringcontroltitle }

}

這裡面。imeffirst是只定義的乙個介面,其定義相當的簡單

1

2

3

publicinte***ceimeffirst

}

而form則是窗體預設繼承的父類。而exportmetadata則是元資料,可以是一些對部件的描述。

2)第二步,定義匯入import

指出匯出的位置。一般情況下,寫法如下

1

[import]

publicimeffirst imeffirstimportedmainformcontract

如果有很多個部件需要匯入,則必須用importmany,實現多個載入

1

[importmany]

publiclazy> importedmainformcontracts

12

3

4

5

6

7

8

9

10

11

12

13

14

foreach(varexportinthis.importedmainformcontracts)

if(menutitle == thisitemtitle)

frm.show(this);

return;

}

}

export.metadata["name"],這種寫法就是因為其前面我們這樣定義元資料檢視:idictionary
3)第三步,使用
首先,通過下面這段方法,實現對newcontainer的例項化。下面這個方法實現的功能是從指定目錄下匯入

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

privatecompositioncontainer newcontainer;

///

/// 載入指定路徑的dll,並返回compositioncontainer

///

/// dll路徑

///

privatecompositioncontainer getnewcontainer(stringstrpath)

而後,通過

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並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否...