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

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

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

      昨天,我寫了一篇文章(參見:ASP.NET MVC 依賴注入),這種實現方式我個人一直感覺不太順,在寫出來與大家一起分享的同時,

      也是想讓大家提提自己的建議, 今天下載了微軟發布的最新的 ASP.NET MVC3 Beta 版,同時也仔細閱讀了它的 Release Notes,

      讓我感覺到驚喜的是,MVC3增加了對依賴注入的支持,增加了一個 IDependencyResolver 接口定義,真的是很不錯,比起我原來的實現要順暢很多,

      還是老方法,上微軟牛人們的博客逛一圈看看有沒有已經寫好的代碼,有就拿來用之,沒有就只能自己寫了,結果讓我很失望,也可能是我太笨,

      我沒有找到一個完整的示例,只有一些代碼片斷,于是,我將其整理了一翻,也有一點點個人的心得,拿出來,與大家分享一下,

      如遇高人請不吝賜教,下面是代碼片斷。

      1、實現 MVC3 Beta 中提供的依賴注入接口 IDependencyResolverMyDependencyResolver.cs 的代碼  

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      using Microsoft.Practices.Unity;

      namespace Demo
      {
          
      public class MyDependencyResolver : IDependencyResolver
          {
              
      #region IDependencyResolver 成員

              
      /// <summary>
              
      /// 依賴注入容器
              
      /// </summary>
              private UnityContainer _unityContainer;

              
      /// <summary>
              
      /// 構造
              
      /// </summary>
              
      /// <param name="aUnityContainer">依賴注入容器</param>
              public MyDependencyResolver( UnityContainer aUnityContainer )
              {
                  _unityContainer 
      = aUnityContainer;
              }

              
      public object GetService( Type aServiceType )
              {
                  
      try
                  {
                      
      return _unityContainer.Resolve( aServiceType );
                  }
                  
      catch
                  {
                      
      /// 按微軟的要求,此方法,在沒有解析到任何對象的情況下,必須返回 null,必須這么做!!!!
                      return null;
                  }
              }

              
      public IEnumerable<object> GetServices( Type aServiceType )
              {
                  
      try
                  {
                      
      return _unityContainer.ResolveAll( aServiceType );
                  }
                  
      catch
                  {
                      
      /// 按微軟的要求,此方法,在沒有解析到任何對象的情況下,必須返回空集合,必須這么做!!!!
                      return new List<object>( );
                  }
              }

              
      #endregion
          }

      }

       2、在 Global.asax.cs 中設置依賴注入解析器  DependencyResolver (這是一個全局靜態類,也是 MVC3 Beta 新增的):

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      using System.Web.Routing;
      using Microsoft.Practices.Unity;

      namespace Demo
      {
          
      // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
          
      // visit http://go.microsoft.com/?LinkId=9394801

          
      public class MvcApplication : System.Web.HttpApplication
          {
              
      public static void RegisterGlobalFilters( GlobalFilterCollection filters )
              {
                  filters.Add( new HandleErrorAttribute( ) );
              }

              
      public static void RegisterRoutes( RouteCollection routes )
              {
                  routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );

                  routes.MapRoute(
                      
      "Default"// Route name
                      "{controller}/{action}/{id}"// URL with parameters
                      new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                  );

              }

              
      protected void Application_Start( )
              {
                  AreaRegistration.RegisterAllAreas( );

                  RegisterGlobalFilters( GlobalFilters.Filters );
                  RegisterRoutes( RouteTable.Routes );
                  
      //設置依賴注入
                  RegisterDependency( );
              }

              
      private static UnityContainer _Container;
              
      public static UnityContainer Container
              {
                  
      get
                  {
                      
      if ( _Container == null )
                      {
                          _Container = new UnityContainer( );
                      }
                      
      return _Container;
                  }
              }

              
      protected void RegisterDependency( )
              {
                  Container.RegisterType<ITest, Test>( );
                  DependencyResolver.SetResolver( new MyDependencyResolver( Container ) );
              }
          }
      }

        3、Controller的代碼,HomeController.cs

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      using Microsoft.Practices.Unity;

      namespace Demo.Controllers
      {
          
      public class HomeController : Controller
          {
              [Dependency]
              
      public ITest Test { getset; }
              
              
      public ActionResult Index( )
              {
                  ViewModel.Message = Test.GetString( );

                  
      return View( );
              }

              
      public ActionResult About( )
              {
                  
      return View( );
              }
          }
      }

        4、ITest.cs代碼: 

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;

      namespace Demo
      {
          
      public interface ITest
          {
              
      string GetString( );
          }
      }

       5、Test.cs代碼:  

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;

      namespace Demo
      {
          
      public class Test:ITest
          {
              
      #region ITest 成員

              
      public string GetString( )
              {
                  
      return "Run demo!";
              }

              
      #endregion
          }
      }

        

       ***** 注意,這篇文章只適用于 ASP.NET MVC3 Beta 版,將來正式版出來了,未必采用這種方式來實現,畢竟對于依賴注入這塊,

      從 MVC1 -> MVC3 Preview1 -> MVC3 Beta 一直都在變化,微軟牛人(Brad Wilson)在自己的博客中也多次提到:

      Disclaimer

      This blog post talks about ASP.NET MVC 3 Beta, which is a pre-release version. Specific technical details may change before the final release of MVC 3.  

      This release is designed to elicit feedback on features with enough time to make meaningful changes before MVC 3 ships,

      so please comment on this blog post or contact me if you have comments.

       (參見原文:http://bradwilson.typepad.com/blog/2010/10/service-location-pt5-idependencyresolver.html

       

      在下 e 文太差,我就不丟人了,e 文好的自己看吧。

       

      這里是采用Unity依賴注入框架的完整示例:下載(環境:VS2010 + MVC3 Beta + Unity) 

      這里是采用Ninject依賴注入框架的完整示例:下載(環境:VS2010 + MVC3 Beta + Ninject)


      posted on 2010-10-13 12:30  老馬快跑  閱讀(10812)  評論(29)    收藏  舉報

      主站蜘蛛池模板: 欧美xxxxhd高清| 寿阳县| 五月天丁香婷婷亚洲欧洲国产| 亚洲国产欧美在线观看片| 亚洲综合视频一区二区三区| 久久人人97超碰人人澡爱香蕉 | 苏尼特右旗| 东京热一区二区三区在线| 日本区二区三区不卡视频| 国产欧美精品一区二区三区| 亚洲国产精品va在线观看麻豆 | 国产精品一区二区久久毛片| 日日碰狠狠添天天爽不卡| 亚洲V天堂V手机在线| 亚洲激情av一区二区三区| 国产区精品福利在线熟女| 人妻少妇无码精品专区| 沙田区| 国产伦一区二区三区久久| 日韩精品无码一区二区视频| 一区二区三区精品自拍视频| 国产va免费精品观看| 老司机精品影院一区二区三区| 超碰人人超碰人人| 人妻系列中文字幕精品| 国产日韩欧美| 她也色tayese在线视频| 欧洲熟妇熟女久久精品综合| 天堂一区二区三区av| 婷婷综合亚洲| gogogo高清在线观看视频中文| 国产中文字幕在线一区| 久久三级中文欧大战字幕| 欧美精品国产一区二区三区| 中文字幕有码高清日韩| 国内精品久久黄色三级乱| 亚洲永久一区二区三区在线 | 国产成人亚洲欧美二区综合| 国产极品粉嫩馒头一线天| 国产精品任我爽爆在线播放6080| 人妻蜜臀久久av不卡|