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

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

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

      MEF程序設(shè)計指南一:在應(yīng)用程序中宿主MEF

        在應(yīng)用程序中宿主MEF其實非常簡單,只需要創(chuàng)建一個組合容器對象(CompositionContainer)的實例,然后將需要組合的部件(Parts)和當前宿主程序添加到容器中即可。首先需要添加MEF框架的引用,既System.ComponentModel.Composition.dll,詳細如下代碼塊:

      private void Compose()
      {
          var catalog 
      = new AssemblyCatalog(Assembly.GetExecutingAssembly());
          var container 
      = new CompositionContainer(catalog);
          container.ComposeParts(
      this);
      }

       

        通過上面的代碼實現(xiàn)就可以完成MEF的宿主,實際上在使用MEF的開發(fā)過程中并不會如此簡單的應(yīng)用。可能會定義一個或多個導(dǎo)入(Import)和導(dǎo)出(Export)部件,然后通過MEF容器進行組合,其實也可以理解為“依賴注入”的一種實現(xiàn)。比如定義一個圖書接口和一個接口的實現(xiàn)類,在此基礎(chǔ)上使用MEF的導(dǎo)入導(dǎo)出特性:

      public interface IBookService
      {
          
      void GetBookName();
      }
          
      /// <summary>
      /// 導(dǎo)入
      /// </summary>
      [Export(typeof(IBookService))]
      public class ComputerBookService : IBookService
      {
          
      public void GetBookName()
          {
              Console.WriteLine(
      "《Hello Silverlight》");
          }
      }

       

        如上代碼通過使用MEF的[System.ComponentModel.Composition.Export]對接口的實現(xiàn)進行導(dǎo)出設(shè)置,讓接口的實現(xiàn)以容器部件的方式存在,然后通過組合容器進行裝配加載,這個過程中就包括了接口的實例化的過程。接下來就需要在MEF的宿主程序中定義一個接口的屬性,并為其標注[System.ComponentModel.Composition.Import]特性以實現(xiàn)接口實現(xiàn)類的導(dǎo)入。如下代碼塊:

      /// <summary>
      /// 導(dǎo)入接口的實現(xiàn)部件(Part)
      /// </summary>
      [Import]
      public IBookService Service { getset; }

       

        完成了導(dǎo)入導(dǎo)出的接口與實現(xiàn)的開發(fā)及特性配置,下面就剩下一步組合了,也就是本文提到的將部件和宿主程序自身添加到組合容器中,以實現(xiàn)導(dǎo)入(Import)和導(dǎo)出(Export)的組合裝配。

      /// <summary>
      /// 宿主MEF并組合部件
      /// </summary>
      private void Compose()
      {
          var catalog 
      = new AssemblyCatalog(Assembly.GetExecutingAssembly());
          var container 
      = new CompositionContainer(catalog);
          
      //將部件(part)和宿主程序添加到組合容器
          container.ComposeParts(this,new ComputerBookService());
      }

       

        通過以上步驟就完成了MEF的宿主以及一個簡單的部件組合的應(yīng)用示例,下面是本文的完整代碼示例:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.ComponentModel.Composition;
      using System.ComponentModel.Composition.Hosting;
      using System.Reflection;

      namespace HostingMef
      {
          
      public interface IBookService
          {
              
      void GetBookName();
          }
          
          
      /// <summary>
          
      /// 導(dǎo)入
          
      /// </summary>
          [Export(typeof(IBookService))]
          
      public class ComputerBookService : IBookService
          {
              
      public void GetBookName()
              {
                  Console.WriteLine(
      "《Hello Silverlight》");
              }
          }

          
      class Program
          {
              
      /// <summary>
              
      /// 導(dǎo)入接口的實現(xiàn)部件(Part)
              
      /// </summary>
              [Import]
              
      public IBookService Service { getset; }
              
              
      /// <summary>
              
      /// 宿主MEF并組合部件
              
      /// </summary>
              private void Compose()
              {
                  var catalog 
      = new AssemblyCatalog(Assembly.GetExecutingAssembly());
                  var container 
      = new CompositionContainer(catalog);
                  
      //將部件(part)和宿主程序添加到組合容器
                  container.ComposeParts(this,new ComputerBookService());
              }

              
      static void Main(string[] args)
              {
                  Program p 
      = new Program();
                  p.Compose();

                  p.Service.GetBookName();
              }
          }
      }

       

        注:本文參考Hosting MEF in an application,詳細請大家閱讀原文。

        MEF官方網(wǎng)站:http://mef.codeplex.com/

       

      相關(guān)說明

       本文屬學(xué)習(xí)筆記文章,愿與有志者共同學(xué)習(xí)交流。歡迎轉(zhuǎn)載,但請在明顯地位標記本文的原文連接。  

      作      者:Beniao

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

       

       

      posted on 2010-07-03 00:26  Bēniaǒ  閱讀(26761)  評論(19)    收藏  舉報

      主站蜘蛛池模板: 成人午夜免费无码视频在线观看| 日韩精品无码区免费专区| 四虎精品国产精品亚洲精| 丝袜美腿亚洲综合第一页| 久久亚洲色WWW成人男男| 国产一区二区亚洲精品| 国产亚洲久久久久久久| 国产综合视频一区二区三区| 女人与公狍交酡女免费| 国产精品免费视频不卡| 人妻系列中文字幕精品| 西西大胆午夜人体视频| 阜宁县| 国产精品线在线精品| 你拍自拍亚洲一区二区三区| 日韩美a一级毛片| 中文有无人妻vs无码人妻激烈| 欧美性猛交xxxx乱大交丰满| 99久久er热在这里只有精品99| av无码精品一区二区三区四区| 一本久道久久综合狠狠躁av| 亚洲一二区在线视频播放| 久久这里都是精品二| 国产成人无码免费看片软件| 视频一区视频二区亚洲视频| 少妇人妻偷人免费观看| 蜜桃视频网站| 加勒比色综合久久久久久久久| 亚洲国产精品一区二区第一页| 这里只有精品在线播放| 成年女人黄小视频| 九九热在线这里只有精品| 97久久人人超碰国产精品| 欧美和黑人xxxx猛交视频| 国产gaysexchina男外卖| 摸丰满大乳奶水www免费| 日韩高清视频 一区二区| 亚洲精品一区二区妖精| 国产v亚洲v天堂a无码| 国产人妻高清国产拍精品| 色偷偷www.8888在线观看|