一、概述
ABP使用Castle Windsor框架進行依賴注入(構(gòu)造器注入和屬性注入)伐谈。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 可以構(gòu)造注入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> { });
}
}