你好,我有以下问题。
在/Applications/apache-maven-3.6.0/bin
类的ConfigureServices
方法中,我有一个对象只能更具体地构造一次。
必须将该对象传递到层次结构的深处才有用。我不想在一个对象之间传递对该对象的引用。
如果我将其添加到服务集合中,则由于我在其他服务内部使用了该组件,因此它什么也解决不了。
示例
Startup
列表随 public void ConfigureServices(IServiceCollection services)
{
var dependencyObject=await Database(....get me something...);
var singleton=new Singleton(dependencyObject);
var userService=new SomeService(complexObject); //transient !
services.AddTransient(userService);
}
public class SomeService
{
public SomeComponentOfService component{get;set;}
SomeService(Singleton singleton)
{
component=new SomeComponentOfService(singleton);
}
}
public class SomeComponentOfService
{
public Singleton singleton;
public SomeComponentOfService(Singleton single)
{
......on and on....
}
}
对象不断增加。...
现在您可以看到我的Singleton
服务需要一个依赖于另一个服务(数据库)的单例对象,因此必须在层次结构的上层创建单例。
问题是我的Transient
必须向下传递到这个SomeService
的其他对象,并且有一个巨大的层次结构。
我能以某种方式创建我的singleton
链的上层,并从我的服务集合中获取它(无论何时需要)吗?
答案 0 :(得分:1)
在要使用Singleton对象的类中创建一个静态变量。自己重新创建Singleton或让依赖项注入框架执行此操作。然后将其添加到该类的静态变量中。
某些依赖项注入框架也具有参数注入。如果依赖注入框架是深入类的源头,则可以允许通过参数注入添加依赖注入框架。