在ASP.NET Core Dependecy Injection实现中,对象的依赖关系在对象创建时解析,对象直接引用依赖关系 . 这似乎也是Autofac的情况 . 因此,如果我们有一个Repository和DbContext,我们必须使它们都成为范围,因为singleton存储库不会工作 .

相比之下,Java世界中的DI框架(CDI,Spring IoC)注入代理而不是实际依赖,这使得每次使用该依赖时都能够解析依赖对象 . 所以我们可以有单例存储库,因为注入的请求范围entityManager在每个请求上都是不同的 .

我想问为什么.net的框架不像java框架那样做?此外,这两种方法的优点和缺点是什么?

顺便说一句,试图在.net中解决它的问题 - how to use scoped dependency in a singleton in C# / ASP