2011-01-23 58 views
2

有沒有人使用structuremap與asp.net的MVC 3.0的新功能DI?如果是這樣,你可以發佈一些示例代碼或一些有用的示例鏈接?在嘗試學習ASP.NET MVC 3時,我試圖確保使用所有「新」功能,並且努力集成IoC容器。StructureMap和MVC 3.0

回答

3

正如其他人提到你想看看Common Service Locator(CSL)是圍繞任何容器一個簡單的服務分辨率門面(您的任何選擇)。

MVC3內部大量使用了新的IDependencyResolver界面,有點像CSL但在ASP.NET MVC環境。好處是,如果您已經使用CSL,那麼您可以將其設置爲,作爲 MVC的依賴關係解析器。

本主題爲任何容器同樣重要的,而不是具體到StructureMap。

那麼,什麼是對那裏發生的:

  • 你(在StructureMap的情況下,通過preferrably註冊DSL)提供一切必要的容器的註冊;
  • 你得到StructureMap adapter用於公共服務定位;
  • 你(可選 - 如果你需要CSL與DependencyResolver一起)註冊StructureMap適配器作爲當前服務定位: ServiceLocator.SetLocatorProvider(() => yourStructureMapAdapter)
  • 您註冊您的CSL(通過StructureMap支持)爲MVC DependencyResolver: DependencyResolver.SetResolver(yourStructureMapAdapter)
  • MVC3自動線通過內部接口IDependencyResolver(使用所有StrucutreMap DI自動佈線功能)。

除了MVC3烘焙的IoC功能,您還可以使用IoC工具的強大功能(例如,使用StructureMap中的Assemblies掃描)達到最大程度。

+0

謝謝你的解釋。我碰到了這個(http://codingndesign.com/blog/?p=164)教程/文章......這真的很有幫助。我將嘗試將我所做的工作放在一起,並在此分享。我還沒有弄清楚所有的錯誤,但它的到來! :) – jsteve81 2011-01-23 22:44:55

1

我四處張望了一下,這是第一個谷歌的結果我得到了。它提供了MVC 3服務位置的新功能:http://bradwilson.typepad.com/blog/2010/07/service-location-pt1-introduction.html

儘管它依賴於MVC 3的測試版本,但我確信有一些實驗可以弄清楚。

簡而言之,它看起來像他們增加了一些接口和擴展方法,你可以用它來調用StructureMap,或任何你首選的IoC庫。

更新:

我剛好在後我訂閱的博客這個鏈接。它有一些好看的示例代碼。 http://stevesmithblog.com/blog/how-do-i-use-structuremap-with-asp-net-mvc-3/