鉴于以下服务注册:
services.AddSingleton<IMyInterface>(svc => new MyConcreteTpye(svc.GetService<MyEntityFrameworkContext>(), Configuration["Data"]));
我希望自动创建MyConcreteType
实例,但事实并非如此。永远不会调用构造函数。
为什么我需要做这样的事情才能创建实例?
app.ApplicationServices.GetRequiredService<IMyInterface>();
该服务是一个监听器,因此不会在任何地方显式调用它。这是服务的错误用法吗?
答案 0 :(得分:1)
我认为注册到services
的服务应该在某处明确调用,在您的情况下可能不是一个好的选择。
如果你的服务&#34;是独立运行,也许你可以这样做:
public class Startup
{
private IMyInterface _myService;
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
_myService = new MyConcreteTpye(app.ApplicationServices.GetService<MyEntityFrameworkContext>(), Configuration["Data"]);
}
}