📄
ServiceCollectionExtensions.cs
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; using MSearch.Domain; namespace MSearch.SearchProviders.Wikipedia; public static class ServiceCollectionExtensions { public static IServiceCollection AddWikipediaSearchProvider(this IServiceCollection services, string site) { services.AddOptions<WikipediaOptions>(site).Configure(o => o.Site = site); services.TryAddTransient<IValidateOptions<WikipediaOptions>, WikipediaOptionsValidator>(); services.AddHttpClient<ISearchProvider, WikipediaSearchProvider>( nameof(WikipediaSearchProvider), (httpClient, sp) => new WikipediaSearchProvider( Options.Create(sp.GetRequiredService<IOptionsMonitor<WikipediaOptions>>().Get(site)), httpClient ) ); return services; } }