Dependency injection 依赖注入,注入一个;可注射;对象(服务)转换为新的(实体)
在编写代码时,我们应该能够识别两大类对象:Dependency injection 依赖注入,注入一个;可注射;对象(服务)转换为新的(实体),dependency-injection,extension-methods,service-locator,injectable,newable,Dependency Injection,Extension Methods,Service Locator,Injectable,Newable,在编写代码时,我们应该能够识别两大类对象: 注射剂 新事物 可注入对象是在其构造函数中公开依赖项的对象(服务)。这些依赖项通常使用IoC容器解析,这些对象只能在其构造函数中请求其他可注入项 可更新对象也是在其构造函数中公开依赖关系的对象,但可更新对象只能请求其他可更新对象(实体、值对象),可更新对象的另一个特征是它们不应持有对可注入对象的引用 但在编写代码时,我们通常需要将服务(可注入)注入实体(可更新) 我一直在想,也许在一个新的对象中公开一个服务依赖性会更好地在方法级别进行,但这
- 注射剂
- 新事物
- 可注入对象是在其构造函数中公开依赖项的对象(服务)。这些依赖项通常使用IoC容器解析,这些对象只能在其构造函数中请求其他可注入项
- 可更新对象也是在其构造函数中公开依赖关系的对象,但可更新对象只能请求其他可更新对象(实体、值对象),可更新对象的另一个特征是它们不应持有对可注入对象的引用
- 使用公开依赖关系的方法创建接口(此方法中将使用服务)
- 为接口创建一个扩展方法,并将其放置在不同的名称空间中,可能在另一个程序集中,只需包装对使用服务定位器解析依赖关系的原始方法的调用
- 你觉得怎么样
- 在扩展方法中使用服务定位器被认为是不好的做法
- 您将如何对扩展方法调用进行单元测试
ShoppingCart
,而您的injectable是一个数据库存储库
。您希望能够做到这一点:
// somehow cart already got the repository
cart.save();
你做错了。相反,你需要改变现状,做以下事情:
respository.save( cart );
如果您能提供您认为有必要这样做的情况,我们可以讨论该情况的具体情况。密切相关:Thx此链接非常有用