如果我有多个不同的类被重构以实现相同的多个接口,有没有更好的方法可以将这些接口注入到这些类中,而不必在每个实现构造函数中指定相同的接口?
目前据我所知,它的工作原理是
public abstract class Shape {
protected ILogger logger {get; set;}
protected IEventService service {get;set;}
public Shape(ILogger logger, IEventService service){
this.logger = logger;
this.service = service;
}
}
public class Square : Shape{
public Square(ILogger logger, IEventService service) : base(logger,service){}
}
然而,随着更多的接口和多个子接口,这将导致代码中的大量复制/粘贴。
有没有一种方法可以这样设计,使子类不必指定注入的接口,从而使重构多个类更清晰?
我已经尝试了标准的抽象类,但是它需要你发送注入的实现。
2条答案
按热度按时间fdbelqdn1#
如果你使用依赖注入框架,你可以写这样的代码:
然后解析和注入代码看起来像这样:
这一切都在我写的依赖注入框架中,但也有一些维护良好的框架可用。
fhity93d2#
在阅读了Panagiotis链接的内容-Constructor Over-Injection之后,我将重构代码库,以便服务更紧密地遵循SRP,以及添加一些Aggregate Services以减少需要注入到构造函数中的项目数量。谢谢你的帮助