dependency-injection - 使用 autofac 解决在不同项目中注册的组件的依赖关系
问题描述
所以我有一个基础设施层(Project1),我在其中注册所有模块,所以我使用 Autofac,它是这样的:
builder.RegisterType<MyConcreteClass>().As<IMyInterface>()
.WithParameter(new TypedParameter(typeof(string), "myParameter1"))
.WithParameter(new TypedParameter(typeof(string), "myParameter2"));
在另一个项目(Project2)中,我有一个服务,我将调用 MyService,它调用 MyConcreteClass,我打算解决它,但不确定如何解决。首先,在第二个项目中找到了 appsettings,它是一个 dotnet 核心项目,我知道我可以通过在这个 MyService 中注入 IConfiguration 来轻松获取 appsettings,然后类似于:var myParam1 = Configuration["UsefulSettings:MyParameter1"]
两个问题:
我是否应该在 Project1 中解析 MyConcreteClass 的 c-tor 的参数,我在其中将 MyConcreteClass 注册为 IMyInterface 的实现(所以基本上,我问我是否应该同时注册和解析)?如果是这样,考虑到在 Project2 appsettings 中找到的参数,我该怎么做?
如果我可以在 Project2 中解析 MyConcreteClass(在 Project1 中注册之后),这是如何完成的?在 Autofac 文档中,我注意到他们使用类似(https://autofaccn.readthedocs.io/en/latest/resolve/parameters.html)的东西:
var service = scope.Resolve<IMyInterface>()
.WithParameter(new TypedParameter(typeof(string), Configuration["UsefulSettings:MyParameter1"]))
.WithParameter(new TypedParameter(typeof(string), Configuration["UsefulSettings:MyParameter2"])));
...但谁是范围?
那么,哪种方法更好,1 还是 2,你能帮忙填补空白吗?
谢谢你。
解决方案
推荐阅读
- jakarta-ee - Web 应用程序可以在 Tomcat 10 和 Tomcat 9 中运行吗
- powerbi - 计算百分比,包括小计作为 Power BI 中的度量
- android - 由于以下错误,安装失败
- java - 没有可用类型的合格 bean - 预计至少有 1 个有资格作为自动装配候选者的 bean
- wordpress - WordPress 类别到菜单
- c++ - 如何使控制台应用程序在 C++ 中的命令后自动关闭?
- recursion - newLISP 无效函数
- recursion - Pygame 中的递归曲面
- javascript - 使用范围滑块更改 SVG 圆的半径
- python - 如何在 pandas 中对不同的数据框进行分组和聚合