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