色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Silverlight開發(fā)廋身攻略(二)

  繼上一篇《Silverlight開發(fā)廋身攻略(一)》,在上一節(jié)中我主要介紹了在實(shí)際開發(fā)中怎么動(dòng)態(tài)加載圖片資源的方法,并附有實(shí)例。在這一節(jié)中主要給大家介紹MEF(Managed Extensibility Framework)的知識(shí)來實(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ò)展程序。簡單的說:MEF程序設(shè)計(jì)主要Export (輸出)、Import (輸入)、Compose (組合)三個(gè)動(dòng)作來完成。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è)容器,通過它來動(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)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 邻水| 射阳县| 乐陵市| 土默特右旗| 淮滨县| 嘉祥县| 东乡县| 莒南县| 四会市| 淮阳县| 德化县| 从江县| 麟游县| 湖州市| 凤城市| 名山县| 连江县| 莱阳市| 龙游县| 惠水县| 合水县| 阿拉善左旗| 富阳市| 宁海县| 多伦县| 屯留县| 社旗县| 长阳| 盐津县| 绿春县| 依兰县| 新化县| 尤溪县| 全州县| 大洼县| 姜堰市| 龙南县| 汶川县| 牟定县| 仁寿县| 日土县|