依赖注入 – 如何在AutoFac中注册单独程序集中的服务和类型?
发布时间:2020-12-14 04:55:14 所属栏目:百科 来源:网络整理
导读:我正在尝试使用AutoFac注册我的“服务”.这些服务基于约定(Aggregate Root’Service’)命名,所有实现接口都具有相同的名称:’I’ServiceName.例如,OrderService实现IOrderService. 但是,具体类型和接口都在单独的程序集中.到目前为止,我有以下代码: builde
我正在尝试使用AutoFac注册我的“服务”.这些服务基于约定(Aggregate Root’Service’)命名,所有实现接口都具有相同的名称:’I’ServiceName.例如,OrderService实现IOrderService.
但是,具体类型和接口都在单独的程序集中.到目前为止,我有以下代码: builder.RegisterAssemblyTypes(typeof(OrderService).Assembly) .Where(t => t.Name.EndsWith("Service")) .AsImplementedInterfaces(); 这是在AutoFac中实现此目的的最佳方法吗?如果我的一些服务来自抽象类怎么办? 解决方法
Autofac不关心这些接口是否在同一个程序集中.所以你的注册很好,但如果你想从几个程序集加载’services’,你可以传入一个程序集集合:
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()) .Where(t => t.Name.EndsWith("Service")) .AsImplementedInterfaces(); 我想警告你,某些类后缀表示SRP violations和RAP violations,如Helper,Manager和… Service.您可能希望尝试不同的设计,其中此类服务类的每个查询和用例都放在其自己的类中并标记为with a generic interface.这样,您可以使用一行注册相同通用接口的所有实现: builder.RegisterAssemblyTypes( AppDomain.CurrentDomain.GetAssemblies()) .AsClosedTypesOf(typeof(ICommandHandler<>)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- XML布局引起的ClassCastException
- 在Swift中的ios – parse.com – 是否可以将检索到的PFObje
- ruby-on-rails – 如何使用Draper 0.14.0访问装饰器规范文件
- xml – xpath / descendant-or-self – 搜索特定树中的节点
- ruby-on-rails – Ruby-debug无法正常工作
- 如何让ruby块返回块中的变量数组?
- Vue2 监听属性改变watch的实例代码
- 为什么当字符串包含数字时,Ruby的String#to_i有时返回0?
- ruby-on-rails – 基于本地或CircleCI的不同Rubocop结果
- sqlite3学习