在ConfigureServices完成后绑定服务

时间:2017-03-23 02:02:43

标签: asp.net-mvc dependency-injection asp.net-core

我在Startup.cs的ConfigureServices方法中遇到了一个问题,我需要GET(serviceProvider.GetService<>)我绑定的服务,从绑定服务运行方法(CreateEndpoint),返回一个对象,然后将该对象绑定为单例。

似乎我从ConfigureServices中运行了两次services.BuildServiceProvider(),应用程序似乎只在第一次调用时使用服务提供程序,因此第二次调用没有包含我的有界单例对象。

或者,有没有办法在ConfigureServices完成后绑定服务?我当前设置它的方式,CreateEndpoint方法在Startup的Configure方法中触发。唯一的问题是我实际上无法在ConfigureServices方法之外绑定单例对象。

1 个答案:

答案 0 :(得分:1)

你想要这样的东西:

services.AddTransient<EndpointFactory>();
services.AddTransient(container => container.GetService<EndpointFactory>().CreateEndpoint());

如果您需要先解决其他服务,则必须将功能传递给您的注册电话。