我正在使用依赖注入。假设我有一个这样的 OrderService 类:
public class OrderService{
public OrderService(
IOrderValidator validator
, IOrderRepository repository
, IOrderNotificator notificator){
//assign global fields
}
public void SubmitOrder(Order ord){
if(validator.IsOrderValid(ord)){
repository.InsertNew(ord);
notificator.Notify(ord);
}
}
}
现在我想创建一个外观类,例如TypeAOrderService
,由 OrderService 继承,在构造函数中声明组件,例如:
public class TypeAOrderService : OrderService{
public TypeAOrderService() : base(
new OrderValidator(),
new OrderRepository(),
new OrderNotificator()) { }
}
(请注意,注入组件复杂性的实现在这里并不重要,adapter pattern
尽管替换继承也是可以接受的)。
这里可能有缺点,因为我们没有在组合根处定义依赖关系。但是我想知道在某些情况下是否可以接受。尤其是framework component
当通过访问 DI Container 并自己解决它来使用框架是相当奇怪的时候。
更新:
正如评论中提到的,目前我不使用任何 IOC 容器。我的观点是,在框架中使用 IOC 容器很奇怪,因为这意味着每个使用框架的应用程序都需要使用 IOC 容器。如果我的观点是错误的,请随时纠正我。
我所指的框架示例是System.Windows.Forms.Form
我不使用任何 IOC 容器并且不确定依赖关系的地方。