首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对组合根未知的接口的依赖注入

对组合根未知的接口的依赖注入
EN

Stack Overflow用户
提问于 2019-10-21 03:56:36
回答 1查看 31关注 0票数 0

我使用.NET标准(2.1)类库和.NET Core3.0作为web API,因此使用Microsoft.Extensions.DependencyInjection库,尽管我怀疑这并不重要。

一般的做法是,我的组合根( API项目)应该协调应用程序接口所需的所有实现。

当我想要为其设置注入的Web API项目具有未知接口时,我该如何处理此问题?

例如,CQRS类型依赖堆栈:

代码语言:javascript
复制
MyProject.Web.API, depends on:
    MyProject.MyService, which depends on:
        MyProject.MyService.Command
            MyProject.MyService.Command.Data
        MyProject.MyService.Query
            MyProject.MyService.Query.Data

MyProject.Web.API不知道数据项目的存在,但是每个数据项目都有一个我想要处理的ICommandDbContextIQueryDbContext

如果不将底层接口一直公开到Web API项目,我就无法在组合根中设置这些接口,因为其他任何原因都是完全不必要的。我如何处理这些低级项目中的依赖注入?

EN

回答 1

Stack Overflow用户

发布于 2019-10-21 04:50:18

这将需要那些较低的级别公开一个扩展点,以允许它与容器通信,从而用所需的依赖项填充它。

例如

MyProject.MyService

代码语言:javascript
复制
public static class MyServiceProjectExtension {
    public IServiceCollection AddMyServiceDependencies(this IServiceCollection services) {
        services.AddDbContext<ICommandDbContext, CommandDbContext>(...);

        //...

        return services;
    }
} 

并且组合根调用服务项目中的扩展点

MyProject.Web.API

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services) {

    services.AddMyServiceDependencies();

}

然而,这意味着MyProject.MyService将直接依赖于Microsoft.Extensions.DependencyInjection.Abstractuions,以便了解DI框架。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58476770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档