|
繼上一篇《Silverlight開發(fā)廋身攻略(一)》,在上一節(jié)中我主要介紹了在實(shí)際開發(fā)中怎么動(dòng)態(tài)加載圖片資源的方法,并附有實(shí)例。在這一節(jié)中主要給大家介紹MEF(Managed Extensibility Framework)的知識(shí)來(lái)實(shí)現(xiàn)Xap包的動(dòng)態(tài)加載。
Managed Extensibility Framework(MEF)是.NET平臺(tái)下的一個(gè)擴(kuò)展性管理框架,它是一系列特性的集合,包括依賴注入(DI)以及Duck Typing等。MEF為開發(fā)人員提供了一個(gè)工具,讓我們可以輕松的對(duì)應(yīng)用程序進(jìn)行擴(kuò)展并且對(duì)已有的代碼產(chǎn)生最小的影響,開發(fā)人員在開發(fā)過程中根據(jù)功能要求定義一些擴(kuò)展點(diǎn),之后擴(kuò)展人員就可以使用這些擴(kuò)展點(diǎn)與應(yīng)用程序交互;同時(shí)MEF讓應(yīng)用程序與擴(kuò)展程序之間不產(chǎn)生直接的依賴,這樣也允許在多個(gè)具有同樣的擴(kuò)展需求之間共享擴(kuò)展程序。簡(jiǎn)單的說(shuō):MEF程序設(shè)計(jì)主要Export (輸出)、Import (輸入)、Compose (組合)三個(gè)動(dòng)作來(lái)完成。MEF的核心包括一個(gè)catalog和一個(gè)CompositionContainer。category用于發(fā)現(xiàn)擴(kuò)展,而container用于協(xié)調(diào)創(chuàng)建和梳理依賴性。每個(gè)可組合的Part提供了一個(gè)或多個(gè)Export,并且通常依賴于一個(gè)或多個(gè)外部提供的服務(wù)或Import。每個(gè)Part管理一個(gè)實(shí)例為應(yīng)用程序運(yùn)行。
關(guān)于MEF的基礎(chǔ)知識(shí)在這里不是重點(diǎn),大家可以在網(wǎng)上搜一下,有很多介紹這方面的文章。下面直截以實(shí)例轉(zhuǎn)入正題。在實(shí)例中我們創(chuàng)建三個(gè)Silverlight Application項(xiàng)目,它們分別是:MEFLoadXap、FristXap、SecondXap。MEFLoadXap是主項(xiàng)目,它是一個(gè)容器,通過它來(lái)動(dòng)態(tài)加載FristXap、SecondXap包。本實(shí)例環(huán)境是VS.NET 2010 NET4.0,在NET4.0中集成了MEF的功能。
一、新建MEFLoadXap項(xiàng)目
1、用VS.NET 2010新建名為MEFLoadXap的Silverlight Application項(xiàng)目,添加System.ComponentModel.Composition、System.ComponentModel.Composition.Initialization引用,如下圖所示:
2、在MEFLoadXap項(xiàng)目下添加DeploymentCatalogService.cs文件,在文件中添加IDeploymentCatalogService接口,并編寫繼承此接口的DeploymentCatalogService的類,此類主要封裝了下載指定Xap包,自動(dòng)導(dǎo)入帶有Export屬性標(biāo)簽類型為UserControl控件對(duì)象。
IDeploymentCatalogService代碼:
/// <summary>
/// 加載Xap服務(wù)接口
/// </summary>
public interface IDeploymentCatalogService
{
/// <summary>
/// 加載Xap包的方法
/// </summary>
/// <param name="uri">Xap包路徑</param>
/// <param name="completedAction">加載完成后的事件</param>
void AddXap(string uri, Action<AsyncCompletedEventArgs> completedAction = null);
/// <summary>
/// 移除Xap包的方法
/// </summary>
/// <param name="uri">Xap包路徑</param>
void RemoveXap(string uri);
}
NET技術(shù):Silverlight開發(fā)廋身攻略(二),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。