2008-12-15 65 views
0

我的Global.asax看起来像这样ASP.NET MVC应用程序的访问财产型号

Imports Castle.Windsor 
Imports Castle.Windsor.Configuration.Interpreters 

Public Class MvcApplication 
    Inherits System.Web.HttpApplication 
    Implements IContainerAccessor 

    Private Shared IoC As IWindsorContainer 

    Shared Sub RegisterRoutes(ByVal routes As RouteCollection) 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

     ' MapRoute takes the following parameters, in order: 
     ' (1) Route name 
     ' (2) URL with parameters 
     ' (3) Parameter defaults 
     routes.MapRoute(_ 
      "Default", _ 
      "{controller}/{action}/{id}", _ 
      New With {.controller = "Home", .action = "Index", .id = ""} _ 
     ) 

    End Sub 

    Sub Application_Start() 
     RegisterRoutes(RouteTable.Routes) 
     IoC = New WindsorContainer(New XmlInterpreter) 
    End Sub 

    Public ReadOnly Property Container() As Castle.Windsor.IWindsorContainer Implements Castle.Windsor.IContainerAccessor.Container 
     Get 
      Return IoC 
     End Get 
    End Property 
End Class 

我要如何访问任何模型类在容器内的财产? 是有一类我可以从继承给我的“应用程序”属性可以在视图,所以我可以给这个

的IoC = Application.Item(“容器”)...

回答

4

你可能不要不希望你的模型对象知道你的IoC容器。

但是,对于回答你的问题的缘故,你可以这样访问:

(C#)

var container = ((IContainerAccessor)MvcApplication).Container; 
+0

我想同意,你不希望你的模型对象知道1000%关于您的IOC容器。他们所需要的一切都应该在他们建成时传递给他们。 – Paul 2010-06-01 19:35:19