MEF系列一 應用程式中的宿主MEF

2021-06-20 00:08:11 字數 2322 閱讀 4589

在應用程式中宿主mef包含建立組合容器物件(compositioncontainer),向組合容器物件新增可組合部件(parts),包含應用程式宿主本身,最後進行組合。

下面是關於宿主的步驟:

1、建立乙個宿主類,在本例中我們使用乙個控制台程式,所以宿主就是program類。

2、新增引用:system.componentmodel.composition

3、新增宣告:using system.componentmodel.composition;

4、建立組合容器物件和組合宿主,新增compose()方法

5、新增run()方法用以呼叫compose()

6、在main()方法中實列化宿主類

注:在asp.net或者wpf應用程式中,宿主在執行時就已被例項化,所以這個步驟是不需要的

**應該看起來應該像下面的片斷

using system.componentmodel.composition;

using system.componentmodel.composition.hosting;

using system.reflection;

using system;

public class program

public void run()

private void compose()

}

7、定義乙個或多個宿主將import的exports,下面的**我們定義乙個imessagesender 介面,同時我們定義乙個已經標識為exports,匯出為imessagesender的emailsender組合部件,通過[system.componentmodel.composition.export]即可宣告標識

public inte***ce imessagesender

[export(typeof(imessagesender))]

public class emailsender : imessagesender

}

8、用[system.componentmodel.composition.import]為宿主類中為每乙個import新增屬性,下面的例子就是為program類中的imessagesender新增import 屬性

[import]

public imessagesender messagesender

9、mef中,有幾種方法可以為組合容器物件新增部件(parts),其中一種就是直接新增已存在的組合部件(parts)例項,而第二種,更常見的是我們下面會提及的通過使用目錄

直接為組合容器物件新增已存在的部件(parts)

在compose()方法中通過composeparts()擴充套件方法手動新增組合部件(part),在下面的例子中,在當前的program例項中匯入(imports)的emailsender將被新增到組合容器物件中

private void compose()

通過集合目錄新增到組合容器物件

通過使用目錄,組合容器物件自動處理建立部件(parts),而不是他們必須顯示地新增,在compose()方法中建立乙個目錄,接下來建立乙個解析器的目錄並將其傳遞給組合容器物件的建構函式。

在下面的例子中,集合目錄(assemblycatalog)通過傳入executing assembly物件建立物件,我們並沒有新增emailsender的例項,但它將會通過當前集合目錄被發現

private void compose()

完整**看起來應該如下如示:

using system.componentmodel.composition;

using system.componentmodel.composition.hosting;

using system.reflection;

using system;

public class program

public static void main(string args)

public void run()

private void compose()

} public inte***ce imessagesender

[export(typeof(imessagesender))]

public class emailsender : imessagesender

}

當上面的**編譯並執行,應用程式裝組合imessagesender import,方法send()將會被呼叫,在控制台中輸出「message sent」

在應用程式中宿主MEF

在應用程式中宿主mef其實非常簡單,只需要建立乙個組合容器物件 compositioncontainer 的例項,然後將需要組合的部件 parts 和當前宿主程式新增到容器中即可。首先需要新增mef框架的引用,既system.componentmodel.composition.dll,詳細如下 塊...

MEF程式設計指南一 在應用程式中宿主MEF

在應用程式中宿主mef其實非常簡單,只需要建立乙個組合容器物件 compositioncontainer 的例項,然後將需要組合的部件 parts 和當前宿主程式新增到容器中即可。首先需要新增mef框架的引用,既system.componentmodel.composition.dll,詳細如下 塊...

hibernate的第一應用程式

1.hibernate是站在jdbc的基礎上的框架,遠比jdbc好用,它的的開發步驟如下 1 在工程下建乙個lib包,匯入用到的jar包 2 寫乙個pojo類 3 配置pojo類名.hbm.xml檔案 4 配置hibernate.cfg.xml檔案 5 寫應用程式類 2.實戰 1 匯入如下的jar包...