gpt4 book ai didi

c# - 不引用实现的 ASP.NET Core 依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 13:54:43 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Ioc/DI - Why do I have to reference all layers/assemblies in application's entry point?

(4 个回答)


去年关闭。




我正在做一个宠物项目来练习我的 .NET Core。我正在使用一个带有内置依赖注入(inject)框架的 Web 应用程序项目,就像这样

public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IProductRepository, ProductRepository>();

< ... other code ... >
}
它迫使我添加对我的 Data 的引用包含 ProductRepository 实现的项目到我的 WebApplication项目。这将意味着稍后 WebApplication项目将需要引用所有其他项目并且可能会滥用它 - 我什至不希望 Web 了解存储库,一切都应该通过服务来完成。
我的问题是 - 我可以避免引用 WebApplication 中的所有其他项目吗?使用内置DI?
(我知道我可以使用其他 DI 容器来解决这个问题)。

最佳答案

我建议强烈考虑将您的存储库接口(interface)放在“域层”中,以便您的 Web 项目仅引用域项目。然后,您可以在测试时模拟存储库。一旦你准备好实现存储库,你可能会有强烈的动机在 web 项目中添加对具体存储库的引用,因为你想要 DI 注入(inject)具体实现(此时你必须引用数据层,因为 DI需要知道在类为此设置构造函数时要注入(inject)的类型)

关于c# - 不引用实现的 ASP.NET Core 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64434309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com