zoukankan      html  css  js  c++  java
  • MVC项目用Windsor注入

    第一步创建controler 注入类

    public class ApiControllersInstaller : IWindsorInstaller

    {

     public void Install(IWindsorContainer container, IConfigurationStore store)
     {
           container.Register(Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient());
    }

    }

    第二步创建windsor安装类

    public static class WindsorBootstrapper
    {
         private static IWindsorContainer _container;

    public static void Initialize()
    {
         _container = new WindsorContainer();

        _container.Install(
          FromAssembly.This(),
          FromAssembly.Containing<RepositoriesInstaller>(),
          FromAssembly.Containing<ServicesInstaller>());


        _container.Register(Component.For<IWindsorContainer>().Instance(_container).LifestyleSingleton());
        var controllerFactory = new WindsorControllerFactory(_container.Kernel);
        ControllerBuilder.Current.SetControllerFactory(controllerFactory);
    }

    public static IWindsorContainer Container()
    {
         return _container;
    }

    }

    第三步创建 WindsorControllerFactory 工厂类

    public class WindsorControllerFactory : DefaultControllerFactory

    {

    private readonly IKernel _kernel;

    public WindsorControllerFactory(IKernel kernel)
    {
      _kernel = kernel;
    }

    public override void ReleaseController(IController controller)
    {
         _kernel.ReleaseComponent(controller);
    }

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)

    {

       if (controllerType == null)
       {
            throw new HttpException(404, string.Format("The controller for path '{0}' could not be found.", requestContext.HttpContext.Request.Path));
        }
        return (IController)_kernel.Resolve(controllerType);

    }

    }

    第四步 在 Global.asax 中调用windsor安装类

    protected void Application_Start()
    {

       WindsorBootstrapper.Initialize();

    }

  • 相关阅读:
    Bootstrap--模仿官网写一个页面
    【ASP.NET基础】客户端、服务器端的数据验证 + CKEditer
    初识--Ajax & Json
    ASP.NET 状态的传递和保存
    启动项目报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadT
    Oracle数据库导不进去
    Tomcat一闪就退
    Oracle提示已连接到空闲的实例
    创建数据库表空间
    cmd命令导入.dmp文件
  • 原文地址:https://www.cnblogs.com/wuwei928/p/5627786.html
Copyright © 2011-2022 走看看