Comment faire pour Résoudre Exemple à l'Intérieur d'ConfigureServices dans ASP.NET de Base
Est-il possible de résoudre une instance de IOptions<AppSettings>
de la ConfigureServices
méthode de Démarrage? Normalement, vous pouvez utiliser IServiceProvider
pour initialiser les instances, mais vous ne l'avez pas, à ce stade, lorsque vous vous inscrivez à des services.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(
configuration.GetConfigurationSection(nameof(AppSettings)));
//How can I resolve IOptions<AppSettings> here?
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez construire un fournisseur de service à l'aide de la
BuildServiceProvider()
méthode sur laIServiceCollection
:Vous avez besoin de la
Microsoft.Extensions.DependencyInjection
paquet pour cette.Dans le cas où vous avez juste besoin de lier certaines options en
ConfigureServices
, vous pouvez également utiliser leBind
méthode:Cette fonctionnalité est disponible par le biais de la
Microsoft.Extensions.Configuration.Binder
paquet.ConfigureServices
méthode.BuildServiceProvider
provoque un avertissement si elle est utilisée dans le code de l'application tels queConfigureServices
, car les résultats d'une copie supplémentaire du singleton services en cours de création. Ehsan Mirsaeedi la réponse de ici est la meilleure solution pour les cas comme cela.La meilleure façon pour l'instanciation des classes qui dépendent d'autres services est d'utiliser le AjouterXXX surcharge qui vous offre la IServiceProvider. De cette façon, vous n'avez pas besoin d'instancier un intermédiaire prestataire de service.
Les exemples suivants montrent comment vous pouvez utiliser cette surcharge en AddSingleton/AddTransient méthodes.
Vous êtes à la recherche de quelque chose comme la suite? Vous pouvez prendre un coup d'oeil à mes commentaires dans le code: