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

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

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

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

        在MEF中,使用[System.ComponentModel.Composition.ExportAttribute]支持多種級別的導出部件配置,包括類、字段、屬性以及方法級別的導出部件,通過查看ExportAttribute的源代碼就知道ExportAttribute被定義為Attribute,并為其設置了使用范圍。

      [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance""CA1813:AvoidUnsealedAttributes")]
      [AttributeUsage(AttributeTargets.Class 
      | AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method,
                      AllowMultiple 
      = true, Inherited = false)]
      public class ExportAttribute : Attribute
      {
        
      //......
      }

       

        當任何一個類對象或是其內部的字段、屬性、方法需要作為可組合部件的時候,就可以使用[ExportAttribute]將其標注為可導出部件。比如需要將一個對象做為可組合部件進行導出(就是類級別的導出),只需要在類上添加[ExportAttribute]就行了,詳細的應用可參考《MEF中組合部件(Composable Parts)與契約(Contracts)的基本應用》,下面為演示代碼:

      [System.ComponentModel.Composition.Export]
      public class DBLogger
      {
      }

       

        對于字段、屬性級別的導出同類是一樣的,通樣使用[ExportAttribute]進行標注,下面代碼塊演示了一個完整的屬性導入與導出的示例。

      namespace MEFTraining.ExmprtImport
      {
          
      public partial class MainPage : UserControl
          {
              [Import(
      "Name")]
              
      public string BookName { getset; }

              
      public MainPage()
              {
                  InitializeComponent();

                  CompositionInitializer.SatisfyImports(
      this);

                  MessageBox.Show(BookName);
              }
          }

          
      public class BookService
          {
              [Export(
      "Name")]
              
      public string BookName
              {
                  
      get { return "《MEF程序設計指南》"; }
              }
          }
      }

       

        方法級的導入與導出主要是利用委托實現,既Action或Action<T>,其使用也是非常簡單的,無論是方法所需的參數還是返回值,都可以通過匿名委托去實現。如下代碼中定義了一個BookService類,里面通過MEF導出了PrintBookName方法,且帶有一個字符串類型參數,此時就可以通過匿名委托進行形參的和方法的導出。

      public class BookService
      {
          [Export(
      typeof(Action<string>))]
          
      public void PrintBookName(string name)
          {
              Console.WriteLine(name);
          }
      }

       

         在需要使用到此方法的地方,只需要通過匿名委托的方法對該方法進行導入就可以了,下面的代碼是對上面的導出方法的調用示例。

      public partial class MethodExportImport : UserControl
      {
          [Import(
      typeof(Action<string>))]
          
      public Action<string> PrintBookName { getset; }

          
      public MethodExportImport()
          {
              InitializeComponent();

              CompositionInitializer.SatisfyImports(
      this);

              PrintBookName(
      "《MEF程序設計指南》");
          }
      }

       

         另外,MEF也支持繼承的導入與導出應用,使用[System.ComponentModel.Composition.InheritedExportAttribute]實現基于繼承的導出,其他的和字段、屬性、方法級的應用完全一致,下面的代碼演示了基于繼承的導出與導出應用。

      namespace MEFTraining.ExmprtImport
      {
          
      public partial class InheritedExportImport : UserControl
          {
              [Import]
              
      public IUserServie UService { getset; }

              
      public InheritedExportImport()
              {
                  InitializeComponent();
                  CompositionInitializer.SatisfyImports(
      this);

                  
      string name = UService.GetUserName();
              }
          }

          [InheritedExport]
          
      public interface IUserServie
          {
              
      string GetUserName();
          }
          
      public class UserService : IUserServie
          {
              
      public string GetUserName()
              {
                  
      return "張三";
              }
          }
      }

       

        MEF還支持構造方法參數的導入,詳細這里就不介紹了,有興趣的可直接查詢MEF英文版程序設計指南介紹。

       

        注:本文參考與MEF英文版程序設計指南,詳細請查閱:Declaring Exports 、 Declaring Imports  

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

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

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

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

       

      相關說明

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

      作      者:Beniao

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

       

      posted on 2010-07-11 17:22  Bēniaǒ  閱讀(11149)  評論(3)    收藏  舉報

      主站蜘蛛池模板: 成午夜福利人试看120秒| 久久精品久久电影免费理论片| 亚洲avav天堂av在线网爱情| 伊人成色综合人夜夜久久| 国产精品日韩中文字幕| 国产乱沈阳女人高潮乱叫老 | 噜噜久久噜噜久久鬼88| 国产午夜精品福利91| 口爆少妇在线视频免费观看| 天天躁夜夜躁狠狠喷水| 成年女人免费碰碰视频| 久久88香港三级台湾三级播放| 精品国产中文字幕av| 真实国产乱子伦视频| 久久99精品久久久久久9| 202丰满熟女妇大| 丁香五月亚洲综合深深爱| 无码综合天天久久综合网| 日韩精品亚洲精品第一页| 日韩成人高精品一区二区| 亚洲av无码成人影院一区| 韩国无码AV片午夜福利| 亚洲码和欧洲码一二三四| 国产自拍一区二区三区在线| 日本国产精品第一页久久| 国产毛片三区二区一区| 亚洲一区二区三区小蜜桃| 成人永久免费A∨一级在线播放 | 林芝县| 午夜一区二区三区视频| 亚洲毛片多多影院| 亚洲熟女片嫩草影院| 唐山市| 国精品91人妻无码一区二区三区| 国产精品视频第一第二区| 久久夜色撩人精品国产av| 久久久久青草线蕉亚洲| 日韩一区二区三区在线观院| 人妻丰满熟AV无码区HD| 2021亚洲国产精品无码| 国产一级小视频|