3.依賴注入Castle Windsor

一、概述

ABP使用Castle Windsor框架進行依賴注入(構造器注入和屬性注入)。ABP會自動將Repositories,Domain Services,Application Services MVC控制器,Web API控制器進行注冊

二、使用

2.1自動注冊

我們無需進行任何操作,ABP自動會進行注冊。要做的只是

  • 將程序集注冊到容器中(IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());)
  • 按約定實現(xiàn)接口:IApplicationService,IRepository即可

2.2自定義注冊

2.2.1 實現(xiàn)ISingletonDependency接口

實現(xiàn)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實現(xiàn)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> { });
                }
            }
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容