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();

    }

  • 相关阅读:
    中债登、银行间市场、上清所… 这些机构你能分清几个?
    期货界的四大天王
    心理学的几个现象
    西方金融交易员揭露行业潜规则
    瑞银保住欧股交易经纪龙头宝座 算法交易傲视同业
    【Python】 zabbixAPI的包装pyzabbix
    【Python】 日志管理logging
    【Python】 子进程创建与使用subprocess
    【Python】 配置解析ConfigParser & 命令行参数解析optparser
    【Python】 SSH连接的paramiko
  • 原文地址:https://www.cnblogs.com/wuwei928/p/5627786.html
Copyright © 2011-2022 走看看