亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Unity Application Block Hands-on Lab for Ent

系統 1736 0

實驗估計時間:25mins

?

介紹

在實驗中,你將會學習通過程序配置文件去創建一個Unity Container。使用配置文件有些類似于上篇實驗中的調用配置API。實際上,配置文件方式可以看成腳本調用API。

先在 這里 下載實驗代碼。

?

任務1:使用配置文件保存Container的配置信息

在這次任務中,主要是用配置文件替換Container的創建代碼。

添加引用的有:Microsoft.Practices.Unity.Configuration和System.Configuration。

打開Program.cs文件,添加代碼 using Microsoft.Practices.Unity.Configuration。將container的一堆RegisterType方法用LoadConfiguration方法替換。如下:

        
          using
        
         (IUnityContainer container = 
        
          new
        
         UnityContainer())
      
        {
      
        
          // TODO replace with application of configuration information here
        
      
        
          //container
        
      
        
          //    .RegisterType<IStocksTickerView, StocksTickerForm>()
        
      
        
          //    .RegisterType<IStockQuoteService, MoneyCentralStockQuoteService>(
        
      
        
          //        new InjectionProperty("Logger"))
        
      
        
          //    .RegisterType<ILogger, ConsoleLogger>()
        
      
        
          //    .RegisterType<ILogger, TraceSourceLogger>(
        
      
        
          //        "UI",
        
      
        
          //        new ContainerControlledLifetimeManager(),
        
      
        
          //        new InjectionConstructor("UI"))
        
      
        
          //    .RegisterType<StocksTickerPresenter>(
        
      
        
          //        new InjectionProperty(
        
      
        
          //            "Logger",
        
      
        
          //            new ResolvedParameter<ILogger>("UI")));
        
      
        ?
      
            container.LoadConfiguration();
      
        ?
      
            StocksTickerPresenter presenter
      
                = container.Resolve<StocksTickerPresenter>();
      
        ?
      
            Application.Run((Form)presenter.View);
      
        }
      

LoadConfiguration擴展方法是最簡單方便的方式配置container。該方法從程序配置文件里檢索相關的配置文件信息,而不是執行程序的配置文件。

更多信息關于container加載配置的內容請看Unity2.0文檔中的"Loading Configuration File Information into a Container" http://msdn.microsoft.com/en-us/library/ff660935(v=PandP.20).aspx#load_config

創建配置文件

下面主要使用到了一些Unity的配置元素,Unity配置元素的更多內容看Unity2.0文檔中的"The Unity Configuration Schema" http://msdn.microsoft.com/en-us/library/ff660914(v=PandP.20).aspx

打開App.config文件;

添加unity配置區域的聲明:

        <section name=
        
          "unity"
        
      
             type=
        
          "Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, 
        
      
             Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      
        </section>
      

unity這個name只是一個配置域的約定,任何名字都有效。

添加一個untiy的元素:

        <unity xmlns=
        
          "http://schemas.microsoft.com/practices/2010/unity"
        
        >
      
      
        </unity>
      
        configuration>
      

這個元素名字必須與注冊unity configSections一致。

該untiy標簽中的xmlns不是配置運行時必須的。假如你在unity標簽中使用了該xmlns,Visual Studio XML editor加載了Unity Configuration XSD文件,editor會自動提示標簽,給你配置unity帶來方便。

增加一個alias標簽。

        <unity xmlns=
        
          "http://schemas.microsoft.com/practices/2010/unity"
        
        >
      
          <alias alias=
        
          "TraceSource"
        
      
                 type=
        
          "System.Diagnostics.TraceSource, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        
        />
      
        </unity>
      

類型的別名不是必須的。類型的別名、assembly和namespace標簽的作用都是減少配置文件的代碼量,并便于閱讀。.NET中已經有一些別名了,像int、string和singleton。

下面定義assembly和namespace:

        <assembly name=
        
          "StockTicker"
        
        />
      
        <
        
          namespace
        
         name=
        
          "StockTicker.Loggers"
        
        />
      
        <
        
          namespace
        
         name=
        
          "StockTicker.StockQuoteServices"
        
        />
      
        <
        
          namespace
        
         name=
        
          "StockTicker.UI"
        
        />
      
        </unity>
      

添加一個container標簽。

        <
        
          namespace
        
         name=
        
          "StockTicker.UI"
        
        />
      
        ?
      
        <container></container>
      

這是一個name為缺省值的container,被不帶name的LoadConfiguration方法調用。

在container中添加一個register標簽,將IStockTickerView接口與StocksTickerForm建立映射。

下面添加注冊信息:

        <container>
      
          <register type=
        
          "IStocksTickerView"
        
         mapTo=
        
          "StocksTickerForm"
        
        />
      
          <register type=
        
          "IStockQuoteService"
        
         mapTo=
        
          "RandomStockQuoteService"
        
        >
      
            <property name=
        
          "Logger"
        
        ></property>
      
          </register>
      
          <register type=
        
          "ILogger"
        
         mapTo=
        
          "ConsoleLogger"
        
        />
      
          <register name=
        
          "UI"
        
         type=
        
          "ILogger"
        
         mapTo=
        
          "TraceSourceLogger"
        
        >
      
            <lifetime type=
        
          "singleton"
        
        />
      
            <constructor>
      
              <param name=
        
          "traceSourceName"
        
        
          value
        
        =
        
          "UI"
        
        />
      
            </constructor>
      
          </register>
      
          <register type=
        
          "StocksTickerPresenter"
        
        >
      
            <property name=
        
          "Logger"
        
        >
      
              <dependency name=
        
          "UI"
        
        />
      
            </property>
      
          </register>
      
        </container>
      

類似于上個實驗調用API,運行程序……

Unity Application Block Hands-on Lab for Enter-Lib 5.0:Lab 3-Using a Configuration File[Translation]


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久噜噜噜久久亚洲va久 | 国产精品入口麻豆午夜 | 四虎在线播放免费永久视频 | 国产精品香蕉在线观看不卡 | 国产精选91热在线观看 | 妖精视频在线观看网站 | 91久久老司机福利精品网 | 老师邪恶影院a啦啦啦影院 老师在办公室被躁到白浆 老湿机午夜影院 | 亚洲精品永久一区 | 欧美一区二区在线免费观看 | 91视频免费入口 | 亚洲另类网 | 一区二区国产一区二区a4yy | 久久久久久久久中文字幕 | 精品999视频| 日日碰日日摸日日澡视频播放 | 国产成人亚洲精品91专区手机 | 天天综合久久久网 | 骚碰97| 99色图| 久久九九有精品国产56 | 日韩精品中文字幕久久 | 国产精品乱 | 在线观看免费毛片 | 色综合天天综合网看在线影院 | 国产成人久视频免费 | 久久精品午夜视频 | 色综合久久久久久久久五月 | 国产精品每日更新在线观看 | 欧美国产综合在线 | 女性一级全黄生活片 | 国产精品欧美亚洲韩国日本久久 | 国产精品高清一区二区 | 国产香蕉国产精品偷在线观看 | 午夜男人影院 | 性网站免费 | 丁香狠狠色婷婷久久综合 | 精品一区二区三区在线播放 | 亚洲色图国产精品 | 国产精品美女久久久久网 | 一级特级欧美a毛片免费 |