【问题标题】:Using Asp.Net Core dependency injection to inject classes to other projects使用 Asp.Net Core 依赖注入向其他项目注入类
【发布时间】:2017-08-26 16:23:33
【问题描述】:

我有一个 ASP.Net Core 项目负责处理所有 Web 请求,我还有另一个项目负责读取/写入数据库(实体框架核心项目)。 当然还有另一个项目用于不同的事情,但现在让我们想象一下,为了简单起见,我们只有前两个项目。

是否有可能使用 ASP.Net Core 依赖注入将类注入另一个项目(其他项目是库类而不是 ASP.Net Core 项目)?例如将 DbContext 注入到我的实体框架项目中?

【问题讨论】:

  • 简短的回答是肯定的。让项目依赖于抽象,并让组合根将具体实现注入到依赖项目中。
  • @Nkosi 你能为我提供简单的代码吗?我没有完全理解你的意思。
  • 提供一个minimal reproducible example 可以用来重现您当前的问题。这将有助于为您提供更好的答案,
  • “是否有可能使用 ASP.Net Core 依赖注入将类注入到另一个项目中”。您现在遇到的具体问题是什么?这样做应该很简单,因为它的工作方式与从 ASP.NET 项目中注册类的方式完全相同。

标签: dependency-injection asp.net-core asp.net-core-mvc .net-core


【解决方案1】:

可能你的想法是徒劳的?如果你在 Asp.Net 应用程序中运行,那么你所有的代码可能都是从一个 Controller 调用的,而 Controller 可以获取你需要的所有依赖项,并通过它们传递:

public class MyController : Controller
{
    readonly MyComponent myComponent;

    public MyController(MyDbContext dbctx)
    {
        myComponent= new MyComponent(dbctx);
    }
    // ...etc...
}

但是您的其他项目之一是在 Asp.Net 应用程序之外运行的 ConsoleAppService 吗?那么问题来了,我可以参考 Asp.Net.Core 在 Asp.Net 之外使用 DI 吗?

我怀疑答案是“可能是”,您的出发点是复制MS's builder code on github

但这会引出一个问题,为什么选择 Asp.Net DI 而不是所有现有的 DI 容器? Castle.Windsor、AutoFac、StructureMap、Ninject 多年来都做得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多