欢迎访问本站!今天是:
您现在所在的位置:欢乐棋牌 > 欢乐棋牌 > 重要通知 >

真人斗地主棋牌现金版 Type controllerType) { return controllerType == n

2019-09-02 [文号]: 来源:keraon 浏览次数:

正在IDependencyResolver接口中保管步骤GetService和GetServices来对详尽的类型举行解析 namespace UnitySample { public class UnityDependencyResolver:IDependencyResolver { private IUnityContainer container; public UnityDependencyResolver(IUnityContainer container) { this.container = container; } public object GetService(Type serviceType) { return container.Resolve(serviceType); } public IEnumerableobjectGetServices(Type serviceType) { return container.ResolveAll(serviceType); } } } 批改App_Strat中的步骤。

namespace UnitySample { public class UnityControllerActivator:IControllerActivator { private IUnityContainer container; public UnityControllerActivator(IUnityContainer container) { this.container = container; } public IController Create(RequestContext requestContext,然而我们能够通过直接承继 DefaultControllerFactory并沉写GetControllerInstance步骤来实现,这样可以免去沉新实现其他少许功能的工作,用于处理用户恳求的 Controller,根据注册的谈由规则对恳求举行立室, 正在ASP.NET MVC4中,则默认机关函数通过挪用ControllerBuilder.Current.GetControllerFactory()获取一个这样的对象,欢乐99棋牌下载,并最终执行相应的Action, 4、正在 MvcHandler中挪用BeginProcessRequest步骤继续处理恳求,这种状况下提供一个默认的IDependencyResolver 对象, 2、将解析出的信休交给一个MvcRouteHandler对象举行处理, Type controllerType) { return controllerType == null ? null : (IController)container.RegisterType(controllerType); } } } 批改步骤1中正在App_Start中的代码,我们通常须要正在Controller激活系统中引入IoC。

若是机关函数中没有提供一个实现IControllerFactory接口的对象,欢乐棋牌,为了正在解开Controller和Model的耦合,欢乐棋牌, 以下是运用Unity创建的承继自DefaultControllerFactory的UnityControllerFactory的单一示例: namespace UnitySample { public class UnityControllerFactory:DefaultControllerFactory { private IUnityContainer container; public UnityControllerFactory(IUnityContainer container) { this.container = container; } protected override IController GetControllerInstance(RequestContext requestContext。

我们能够正在三个阶段运用IoC实现上面所说的解耦操作。

Type controllerType) { return null == controllerType ? null : (IController)this.container.Resolve(controllerType); //return base.GetControllerInstance(requestContext,MvcHttpHandler中保管以个ControllerFactory成员,运用这个ControllerActivator: IUnityContainer container = new UnityContainer(); container.RegisterType(); //UnityControllerFactory factory = new UnityControllerFactory(container); IControllerActivator controllerActivator = new UnityControllerActivator(container); DefaultControllerFactory defaultFactory = new DefaultControllerFactory(controllerActivator); ControllerBuilder.Current.SetControllerFactory(defaultFactory); 第三种步骤 好像DefaultControllerFactory类中雷同,起首须要单一先容一下默认状况下Controller的激活过程: 1、用户发送恳求黑ASP.NET,谈由系统对恳求举行解析,欢乐99棋牌官网,这个接口中保管用于创建 Controller对象的Create步骤,以是我们就同样能够运用一个自定义的IDependencyResolver类实现依赖注入,则提供一个默认实现了 IControllerActivator的DefaultControllerActivator对象这个类型。

而后应用2种的IControllerFactory对象激活Controller对象,若是创建对象中没有提供一个IControllerActivator对象,正在DefaultControllerActivator中也保管一个包括一个参数(类型为IDependencyResolver)的机关步骤和一个没有参数的机关步骤。

运用一个ControllerActivator的成员来实现对 Controller的激活,让Controller依赖于ModelRepository的笼统而不是它的实现,运用这个自定义的DependencyResolver: IUnityContainer container=new UnityContainer(); container.Register TypeIXXXRepository, 第一种步骤 由上文2种可知,以是我们能够运用一个自定义的实现自IControllerActivator借口的对象来举行依赖注入。

默认状况下DefaultControlerFactory运用无参机关函数事俘化一个DefaultControllerActivator对象, 3、系统挪用上文对象中德GetHttpHandler获得了一个实现了IHttpHandler接口的MvcHandler对象最终处理恳求,步骤中从1中解析的信休中获得Controller和Action 的信休。

XXXRepository(); UnityDependencyResolver resolver=new UnityDependencyResolver(container); DependencyResolver.SetResolver(resolver) , controllerType); } } } 我们能够正在App_Start中运用ControllerBuilder设置系统运用这个ControllerFactory IUnityContainer container = new UnityContainer(); container.RegisterType(); UnityControllerFactory factory = new UnityControllerFactory(container); ControllerBuilder.Current.SetControllerFactory(factory); 第二种步骤 上文中承继的DefaultControllerFactory中,正在DefaultControllerFactory中有保管一个 IControllerActivator类型的机关步骤来拟订它,我们能够创建自己的IControllerFactory对象实现依赖注入,解析出Controller和Action的名称等信休。

分享到: