[英].Net Core + DI: Class To Centralize Interfaces
我是.Net Core 和Microsoft Dependency Injection 的新手,我想做的是類似於'.ToFactory()'(來自ninject),我可以創建一個包含我所有接口服務的class,避免很多IMyClassService我的控制器。 In.Net Framework + Ninject 我曾經做過:
忍者模塊
Bind< IAppServiceFactory >().ToFactory();
IAppServiceFactory class
public interface IAppServiceFactory
{
IAccessAgreementAppService AccessAgreement { get; }
IAccessAgreementUserAppService AccessAgreementUser { get; }
...
控制器
private readonly IMapper _mapper;
private readonly IAppServiceFactory _appServiceFactory;
public MyController(IMapper mapper,
IAppServiceFactory appServiceFactory)
{
_mapper = mapper;
_appServiceFactory = appServiceFactory;
}
public ActionResult Index()
{
var all = _appServiceFactory.AccessAgreementUser.GetAll();
}
主要原因是有一個更清潔的 controller,而不是
private readonly IAccessAgreementAppService _accessAgreementAppService;
private readonly IAccessAgreementUserAppService _accessAgreementUserAppService;
...
public MyController(IAccessAgreementAppService accessAgreementAppService,
IAccessAgreementUserAppService accessAgreementUserAppService,
...
您可以請求IServiceProvider
並自己獲取服務。
public MyController(IServiceProvider serviceProvider)
{
using (var scope = serviceProvider.CreateScope())
{
var service = scope.ServiceProvider.GetRequiredService<IAccessAgreementAppService();
var all = service.GetAll();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.