3.依赖注入Castle Windsor

一、概述

ABP使用Castle Windsor框架进行依赖注入(构造器注入和属性注入)。ABP会自动将Repositories,Domain Services,Application Services MVC控制器,Web API控制器进行注册

二、使用

2.1自动注册

我们无需进行任何操作,ABP自动会进行注册。要做的只是

  • 将程序集注册到容器中(IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());)
  • 按约定实现接口:IApplicationService,IRepository即可

2.2自定义注册

2.2.1 实现ISingletonDependency接口

实现ISingletonDependency接口ABP将会自动注册该类

    public class MyModuleConfig:ISingletonDependency
    {
        public bool SampleConfig1  { get; set; }
        public string SampleConfig2 { get; set; }
    }

2.2.2 使用IocManager注册

  public override void PreInitialize()
  {
       IocManager.Register<MyModuleConfig>();
  }

2.2.3 使用Castle Windsor 注册

  public override void PreInitialize()
  {
       IocManager.IocContainer.Register(Classes.FromThisAssembly().BasedOn<MyModuleConfig>());
  }

2.2.4实现IWindsorInstaller接口

 public class MyInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.Register(Classes.FromThisAssembly().BasedOn<MyModuleConfig>());
        }
    }

三、其他

3.1 可以构造注入IIocManager,然后手动解析

        private readonly IIocManager _iocManager;
        public TasksController(IIocManager iocManager)
        {
            _iocManager = iocManager;
        }

        public ActionResult Index()
        {
            using(var scope= _iocManager.CreateScope())
            {
                var simple = scope.Resolve<MyModuleConfig>();
                if (simple.SampleConfig2 == "abc")
                {
                    return View(new List<TaskDto> { });
                }
            }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容