【问题标题】:N Layer - Dependency Injection - Net Core [duplicate]N层-依赖注入-网络核心[重复]
【发布时间】:2018-09-30 20:01:33
【问题描述】:

我正在 ASP.NET Core 中构建解决方案架构。

我参考了 web 项目中的存储库,用于在 ConfigureServices() 中声明依赖注入,你可以吗?

我认为理想的情况是只引用服务项目,因为控制器应该只使用服务而不是存储库。

我有这些项目:

  1. Web 应用 (ASP.NET Core) - 引用所有项目。

    public void ConfigureServices(IServiceCollection services)
    {
         services.AddMvc();
         services.AddTransient<IEventsService, EventsService>();
         services.AddTransient<IEventsRepository, EventsSqlRepository>();
    }
    
    public class EventsController : Controller
    {
         private readonly IEventsService _eventsService;
    
         public EventsController(IEventsService eventsService)
         {
              _eventsService = eventsService;
         }
    }
    
  2. 业务(类库 - .NET 标准)

    Folder IServices 
         IEventsService
    
    Folder Services
    
    public class EventsService : IEventsService
    {
        private readonly IEventsRepository _eventsRepository;
    
        public EventsService(IEventsRepository eventsRepository)
        {
             _eventsRepository = eventsRepository;
        }
    }  
    
  3. IRepository(类库 - .NET 标准)

    • IEventsRepository
  4. 存储库(类库 - .NET 标准)

    • 使用 E.F. 访问 BD

      public class EventsSqlRepository : BaseRepository, IEventsRepository
      {
      }
      
  5. Utils(类库 - .NET Standard)

  6. 实体(类库 - .NET Standard)

    • 从 BD E.F 映射

非常感谢!

【问题讨论】:

  • 你知道如何适应它吗?我正在研究类似的架构。

标签: c# asp.net-core dependency-injection architecture n-layer


【解决方案1】:

您的解决方案看起来不错。注册应用程序依赖项的部分称为组合根,它是应用程序中唯一应注册所有依赖项的地方。即使它物理上放置在应用程序的 Web 项目部分中,它在逻辑上也是应用程序的独立部分。你可以在这里阅读更多信息:http://blog.ploeh.dk/2011/07/28/CompositionRoot/

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 1970-01-01
    • 2020-01-17
    • 2018-12-14
    • 2019-01-31
    • 2018-01-03
    • 2019-02-16
    • 1970-01-01
    • 2020-08-28
    相关资源
    最近更新 更多