这是一个.NET Core项目。在启动中,我为翻译服务注册了一个单例,并使用来自appsettings.json的配置设置进行了初始化。设置完成后,整个应用将使用该服务。这在我的控制器和存储库中效果很好,我只定义了构造函数以采用该接口,并按预期进行注入:
services.AddSingleton<Foo.Bar.ITranslationService>(
new Foo.Bar.SomeTranslator(config.TranslationSettings));
但是我遇到的一个问题是POCO需要使用该翻译服务。而且我的POCO都由存储库生成为泛型,因此例如,存储库方法可能如下所示:
public TEntity GetById(object id){
return connection.Get<TEntity>(id);
}
因此,存储库中已经注入了注入的TranslationService,但是是否有一种方法可以使用DI干净地将其传递给需要它的POCO?还是我需要以某种方式破解它?我正在尝试找出最干净的方法,谢谢!
答案 0 :(得分:1)
财产注入怎么样?
get_volume
答案 1 :(得分:0)
基本上,您需要将转换接口添加到该对象的构造函数。
public class MYPOCO
{
private Foo.Bar.ITranslationService translator
public MYPOCO(Foo.Bar.ITranslationService translator)
{
this.translator = translator;
}
}
然后,您可以在课程中使用翻译服务。但是您在那里会遇到许多问题。