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

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

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

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

        MEF可以在傳統(tǒng)應用程序中使用(包括桌面的Winform、控制臺程序和Web的ASP.NET),也可以在RIA的Silverlight中使用。在Silverlight中只是宿主的方式有所不同,實際上在Silverlight中也可以像傳統(tǒng)應用程序中是方式去宿主,MEF也為Silverlight提供了獨特的宿主方式,使用中需要引用System.ComponentModel.Composition.Initialization.dll動態(tài)鏈接庫。

       

        Silverlight中提供了一種新的宿主MEF的方式,只需要在Application_Startup事件處理函數(shù)中通過調用System.ComponentModel.CompositionInitialization程序集的 System.ComponentModel.Composition.CompositionInitializer類里面的方法一行代碼就可以完成MEF的宿主,這是非常方便、簡單的。詳細如下代碼塊:

      private void Application_Startup(object sender, StartupEventArgs e)
      {
          CompositionInitializer.SatisfyImports(
      this);
      }

       

        下面用一個簡單的示例程序演示下在Silverlight中的MEF的基本應用。比如編寫一個日志組件,分別提供兩種寫日志的方式,既寫文本日志和數(shù)據(jù)庫日志,那么對于需要通過MEF托管的部件可以如下代碼定義:

      public interface ILogger
      {
          
      void WriteLog(string message);
      }
          
      [Export(
      "TXT",typeof(ILogger))]
      public class TXTLogger : ILogger
      {
          
      public void WriteLog(string message)
          {
              System.Console.WriteLine(message);
          }
      }

      [Export(
      "DB",typeof(ILogger))]
      public class DBLogger : ILogger
      {
          
      public void WriteLog(string message)
          {
              System.Console.WriteLine(message);
          }
      }

       

        分別將兩個不同的日志記錄組件都通過[ExportAttribute]進行標注為導出部件,并分別為其設置好通信契約,那么在導入他們的地方就直接通過契約確定分別導入什么類型的日志記錄實現(xiàn)部件??梢酝ㄟ^提供一個統(tǒng)一的門面服務以供系統(tǒng)中統(tǒng)一調用,大致如下代碼所示:

      /// <summary>
      /// 門面服務,聚合不同的日志記錄部件,通過MEF進行組合
      /// </summary>
      [Export]
      public class FacadeService
      {
          [Import(
      "TXT")]
          
      public ILogger TXTLogger { getset; }

          [Import(
      "DB")]
          
      public ILogger DBLogger { getset; }
      }

       

        實際上門面服務作為一個簡單、單純的輔助類,也是可以通過MEF進行動態(tài)裝配的,如上代碼就將FacadeService也進行了[ExportAttribute]標注,表示此門面類也是一個可裝配的部件,那么在App 中同樣可以通過[ImportAttribute]進行導入的。

      /// <summary>
      /// 導入FacadeService
      /// </summary>
      [Import]
      public FacadeService Service { getset; }

       

        接下來看看如何調用,F(xiàn)acadeService是被導入在App中的,在應用的時候可以通過Application.Current獲取到當前Silverlight的App對象,總而達到可調用被導入在App中的部件。

      public MainPage()
      {
          InitializeComponent();
       
          var service 
      = (Application.Current as App).Service;
          service.TXTLogger.WriteLog(
      "寫日志到文本文件");
          service.DBLogger.WriteLog(
      "寫日志到數(shù)據(jù)庫");
      }

       

         注:本文參考于Hosting MEF in Silverlight using CompositionInitializer ,點擊連接可訪問英文原文。

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

         推薦資源:在應用程序中宿主MEF

         

       

      相關說明

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

      作      者:Beniao

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

       

      posted on 2010-07-03 14:29  Bēniaǒ  閱讀(12011)  評論(3)    收藏  舉報

      主站蜘蛛池模板: 国产精品揄拍100视频| 国产午夜福利在线视频| 在线成人| 九九热在线精品免费视频| 噜噜综合亚洲av中文无码| 国产精品免费看久久久| 越南女子杂交内射bbwxz| 内射人妻视频国内| 亚洲 制服 丝袜 无码| 永州市| 无码h片在线观看网站| 国产精品不卡一区二区久久| 亚洲av无码牛牛影视在线二区 | 激情 小说 亚洲 图片 伦| 色爱区综合激情五月激情| 山东省| 中文午夜乱理片无码| 中文字幕无码免费久久| 国产蜜臀久久av一区二区| 久久精品波多野结衣| 久久久精品2019中文字幕之3| 亚洲无线观看国产精品| 色爱区综合激情五月激情| 亚洲综合日韩av在线| 亚洲精品二区在线播放| 久久久久久久久18禁秘| 亚洲免费成人av一区| 正蓝旗| 军人粗大的内捧猛烈进出视频 | 中文字幕色偷偷人妻久久| 午夜亚洲www湿好爽| 亚洲爆乳成av人在线视菜奈实| 精品无码三级在线观看视频 | 成人动漫在线观看| 不卡国产一区二区三区| 丰满岳乱妇久久久| 精品无套挺进少妇内谢| 国产精品无码成人午夜电影| 中文字幕无码久久精品| 护士张开腿被奷日出白浆| 99在线国内在线视频22|