使用Asp.Net Core依赖注入将类注入其他项目

时间:2017-04-01 12:32:00

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

我有一个负责处理所有Web请求的ASP.Net Core项目,我有另一个项目负责从数据库读取/写入(Entity framework Core项目)。 当然还有另外一个针对不同事物的项目,但我们现在想象一下,为了简单起见,我们只有前两个项目。

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

1 个答案:

答案 0 :(得分:2)

你想要做的可能是徒劳的吗?如果您在Asp.Net应用程序中运行,那么您的所有代码都可能从Controller调用,并且Controller可以获取您需要的所有依赖项,并将它们传递给:

public class MyController : Controller
{
    readonly MyComponent myComponent;

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

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

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

但那会引起一个问题,为什么选择Asp.Net DI而不是所有现有的DI容器呢? Castle.Windsor,AutoFac,StructureMap,Ninject已经完成了多年的工作。