<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MEF程序設計指南六:MEF中的目錄服務(DeploymentCatalog)

        MEF提供的基于特性的編程模型,可以動態的根據目錄找出程序集里面的所有程序部件。 對于MEF的目錄服務MEF分別為WPF和Silverlight提供了不同的目錄機制。使用目錄的主要功能就是方便實現程序部件的裝載,以及動態的組合應用程序部件等功能,更可以非常方便的得到程序部件的程序集、導出部件等相關數據。

       

        如下代碼塊演示了如何在Silverlight中獲取到當前應用程序的目錄信息,包括了程序集和程序部件等。

      var catalog = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly());
      var assembly 
      = catalog.Assembly;
      var parts 
      = catalog.Parts;

       

        在WPF中可以使用DirectoryCatalog裝配基于目錄的程序部件,Silverlight中則使用DeploymentCatalog來實現目錄的管理,包括程序集下載、裝配等。下面以MEF的目錄在Silverlight中的具體應用為例介紹目錄比較通用的用法,既動態下載與裝配。為了提供系統的靈活性,可以通過抽象接口以高層次的抽象而存在,那么可以通過如下接口來封裝目錄(DeploymentCatalog)。

      public interface IDeploymentService
      {
          
      void AddXap(string relativeUri, Action<AsyncCompletedEventArgs> completedAction);
      }

       

        在具體實現中就可以對DeploymentCatalog進行深度封裝,以達到靈活應用的目的。并且可以將具體的實現通過[Export]標記為可裝配的程序部件,在需要的地方就可以通過接口式的導入[Import]使用了。

      [Export(typeof(IDeploymentService))]
      public class DeploymentCatalogService : IDeploymentService
      {
          
      private static AggregateCatalog _aggregateCatalog;

          Dictionary
      <string, DeploymentCatalog> _catalogs;

          
      public DeploymentCatalogService()
          {
              _catalogs 
      = new Dictionary<string, DeploymentCatalog>();
          }

          
      public static void Initialize()
          {
              _aggregateCatalog 
      = new AggregateCatalog();
              _aggregateCatalog.Catalogs.Add(
      new DeploymentCatalog());
              CompositionHost.Initialize(_aggregateCatalog);
          }


          
      public void AddXap(string relativeUri, Action<AsyncCompletedEventArgs> completedAction)
          {
              DeploymentCatalog catalog;
              
      if (!_catalogs.TryGetValue(relativeUri, out catalog))
              {
                  catalog 
      = new DeploymentCatalog(relativeUri);

                  
      if (completedAction != null)
                      catalog.DownloadCompleted 
      += (s, e) => completedAction(e);
                  
      else
                      catalog.DownloadCompleted 
      += DownloadCompleted;

                  catalog.DownloadAsync();
                  _catalogs[relativeUri] 
      = catalog;
                  _aggregateCatalog.Catalogs.Add(catalog);

              }
          }

          
      void DownloadCompleted(object sender, AsyncCompletedEventArgs e)
          {
              
      if (e.Error != null)
              {
                  
      throw new InvalidOperationException(e.Error.Message, e.Error);
              }
          }
      }

       

         有了上面的封裝,下面只需要一句代碼就可以完成獨立程序包(.xap)的下載和動態裝配,下面為調用封裝的目錄服務接口示例:

      private void button1_Click(object sender, System.Windows.RoutedEventArgs e)
      {
          
      this.Service.AddXap("MEFTraining.MefCatalogs.Parts.xap"null);
      }

       

        對于具體如何使用和集中控制,可以通過契約接口和元數據等策略來實現,詳細在后面的文章里介紹,本篇就介紹到此。

        

        本篇參考于:Using CatalogsDeploymentCatalog    示例代碼下載

       

        MEF官方網站:http://mef.codeplex.com/

        推薦指南:MEF程序設計指南一:在應用程序中宿主MEF

               MEF程序設計指南二:Silverlight中使用CompositionInitializer宿主MEF

               MEF程序設計指南三:MEF中組合部件(Composable Parts)與契約(Contracts)的基本應用

             MEF程序設計指南四:使用MEF聲明導出(Exports)與導入(Imports)

                  MEF程序設計指南五:遲延(Lazy)加載導出部件(Export Part)與元數據(Metadata)

       

      相關說明

       本文屬學習筆記文章,愿與有志者共同學習交流。歡迎轉載,但請在明顯地位標記本文的原文連接。  

      作      者:Beniao

      文章出處:http://beniao.cnblogs.com/  或  http://www.rzrgm.cn/

       

       

      posted on 2010-07-19 22:53  Bēniaǒ  閱讀(8317)  評論(9)    收藏  舉報

      主站蜘蛛池模板: 成人福利国产午夜AV免费不卡在线| 日韩精品无码一区二区视频| 97欧美精品系列一区二区| 精品国产一区二区三区久久女人| 午夜精品福利亚洲国产| 婷婷综合缴情亚洲| 农村乱色一区二区高清视频| 蜜桃亚洲一区二区三区四| 亚洲一区二区约美女探花| 好吊视频一区二区三区人妖| 国产不卡一区二区精品| av日韩精品在线播放| 文昌市| 成人一区二区三区激情视频| 亚洲人成网站77777在线观看| 色情无码一区二区三区| 中文字幕无码免费久久| 精品国产乱码久久久久久婷婷| 亚洲精品男男一区二区| 一区二区三区无码免费看| 免费人成在线观看成人片| 国产免费久久精品44| 久久久久久综合网天天| 久久精品女人的天堂av| 国产成人精品中文字幕| 欧洲码亚洲码的区别入口| 一卡2卡三卡4卡免费网站| 亚洲一区二区三区18禁| 国产成人高清精品亚洲| 国产日韩精品中文字幕| 日韩人妻一区中文字幕| 国产一区二区不卡91| 亚洲中文字幕伊人久久无码| 国产欧美日韩高清在线不卡| 在线精品国精品国产不卡| 香蕉乱码成人久久天堂爱| 国产成人一区二区三区在线| 日韩高清砖码一二区在线| 亚洲成人动漫在线| 精品国产欧美一区二区三区在线| 精品亚洲国产成人av在线|