2017-03-23 32 views
1

我遇到了Startup.cs的ConfigureServices方法中的一個問題,我需要GET(serviceProvider.GetService <>)綁定的服務,運行方法(CreateEndpoint)綁定服務,返回一個對象,然後將該對象綁定爲單例。ConfigureServices完成後綁定服務

看來如果我從ConfigureServices中運行兩次services.BuildServiceProvider(),應用程序似乎只使用第一次調用的服務提供程序,所以第二次調用沒有包含我的有界單例對象。

另外,是否有一種方法可以在配置服務完成後綁定服務?按照我現在設置的方式,CreateEndpoint方法在啓動的Configure方法中啓動。唯一的問題是我無法實際綁定配置服務方法之外的單例對象。

+0

顯示可用於重現該問題以及所需行爲的[mcve]。 – Nkosi

+1

@NKosi我不同意這個問題是離題。期望的行爲非常明確。它是可以回答的,並有一個非常具體的答案。 –

回答

1

你想是這樣的:

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

你有一個函數傳遞到您的註冊電話,如果你需要首先解決的另一個服務。