Skip to content

Commit 3a81dcf

Browse files
authored
use GetRequiredSection and Service to inject options (dotnet-architecture#640)
1 parent 13fed89 commit 3a81dcf

File tree

6 files changed

+20
-17
lines changed

6 files changed

+20
-17
lines changed

src/BlazorAdmin/Program.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Net.Http;
33
using System.Threading.Tasks;
44
using BlazorAdmin.Services;
@@ -20,9 +20,8 @@ public static async Task Main(string[] args)
2020
var builder = WebAssemblyHostBuilder.CreateDefault(args);
2121
builder.RootComponents.Add<App>("#admin");
2222

23-
var baseUrlConfig = new BaseUrlConfiguration();
24-
builder.Configuration.Bind(BaseUrlConfiguration.CONFIG_NAME, baseUrlConfig);
25-
builder.Services.AddScoped<BaseUrlConfiguration>(sp => baseUrlConfig);
23+
var configSection = builder.Configuration.GetRequiredSection(BaseUrlConfiguration.CONFIG_NAME);
24+
builder.Services.Configure<BaseUrlConfiguration>(configSection);
2625

2726
builder.Services.AddScoped(sp => new HttpClient() { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
2827

@@ -37,7 +36,7 @@ public static async Task Main(string[] args)
3736

3837
builder.Services.AddBlazorServices();
3938

40-
builder.Logging.AddConfiguration(builder.Configuration.GetSection("Logging"));
39+
builder.Logging.AddConfiguration(builder.Configuration.GetRequiredSection("Logging"));
4140

4241
await ClearLocalStorageCache(builder.Services);
4342

src/BlazorAdmin/Services/CatalogLookupDataService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using BlazorShared.Interfaces;
1010
using BlazorShared.Models;
1111
using Microsoft.Extensions.Logging;
12+
using Microsoft.Extensions.Options;
1213

1314
namespace BlazorAdmin.Services;
1415

@@ -23,12 +24,12 @@ public class CatalogLookupDataService<TLookupData, TReponse>
2324
private readonly string _apiUrl;
2425

2526
public CatalogLookupDataService(HttpClient httpClient,
26-
BaseUrlConfiguration baseUrlConfiguration,
27+
IOptions<BaseUrlConfiguration> baseUrlConfiguration,
2728
ILogger<CatalogLookupDataService<TLookupData, TReponse>> logger)
2829
{
2930
_httpClient = httpClient;
3031
_logger = logger;
31-
_apiUrl = baseUrlConfiguration.ApiBase;
32+
_apiUrl = baseUrlConfiguration.Value.ApiBase;
3233
}
3334

3435
public async Task<List<TLookupData>> List()

src/BlazorAdmin/Services/HttpService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Threading.Tasks;
55
using BlazorShared;
66
using BlazorShared.Models;
7+
using Microsoft.Extensions.Options;
78

89
namespace BlazorAdmin.Services;
910

@@ -14,11 +15,11 @@ public class HttpService
1415
private readonly string _apiUrl;
1516

1617

17-
public HttpService(HttpClient httpClient, BaseUrlConfiguration baseUrlConfiguration, ToastService toastService)
18+
public HttpService(HttpClient httpClient, IOptions<BaseUrlConfiguration> baseUrlConfiguration, ToastService toastService)
1819
{
1920
_httpClient = httpClient;
2021
_toastService = toastService;
21-
_apiUrl = baseUrlConfiguration.ApiBase;
22+
_apiUrl = baseUrlConfiguration.Value.ApiBase;
2223
}
2324

2425
public async Task<T> HttpGet<T>(string uri)

src/PublicApi/Startup.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Collections.Generic;
1+
using System.Collections.Generic;
22
using System.Text;
33
using AutoMapper;
44
using BlazorShared;
@@ -96,8 +96,9 @@ public void ConfigureServices(IServiceCollection services)
9696
services.AddScoped(typeof(IAppLogger<>), typeof(LoggerAdapter<>));
9797
services.AddScoped<ITokenClaimsService, IdentityTokenClaimService>();
9898

99-
var baseUrlConfig = new BaseUrlConfiguration();
100-
Configuration.Bind(BaseUrlConfiguration.CONFIG_NAME, baseUrlConfig);
99+
var configSection = Configuration.GetRequiredSection(BaseUrlConfiguration.CONFIG_NAME);
100+
services.Configure<BaseUrlConfiguration>(configSection);
101+
var baseUrlConfig = configSection.Get<BaseUrlConfiguration>();
101102

102103
services.AddMemoryCache();
103104

src/Web/HealthChecks/ApiHealthCheck.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
using System.Threading.Tasks;
44
using BlazorShared;
55
using Microsoft.Extensions.Diagnostics.HealthChecks;
6+
using Microsoft.Extensions.Options;
67

78
namespace Microsoft.eShopWeb.Web.HealthChecks;
89

910
public class ApiHealthCheck : IHealthCheck
1011
{
1112
private readonly BaseUrlConfiguration _baseUrlConfiguration;
1213

13-
public ApiHealthCheck(BaseUrlConfiguration baseUrlConfiguration)
14+
public ApiHealthCheck(IOptions<BaseUrlConfiguration> baseUrlConfiguration)
1415
{
15-
_baseUrlConfiguration = baseUrlConfiguration;
16+
_baseUrlConfiguration = baseUrlConfiguration.Value;
1617
}
1718

1819
public async Task<HealthCheckResult> CheckHealthAsync(

src/Web/Startup.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ public void ConfigureServices(IServiceCollection services)
148148
config.Path = "/allservices";
149149
});
150150

151+
var configSection = Configuration.GetRequiredSection(BaseUrlConfiguration.CONFIG_NAME);
152+
services.Configure<BaseUrlConfiguration>(configSection);
153+
var baseUrlConfig = configSection.Get<BaseUrlConfiguration>();
151154

152-
var baseUrlConfig = new BaseUrlConfiguration();
153-
Configuration.Bind(BaseUrlConfiguration.CONFIG_NAME, baseUrlConfig);
154-
services.AddScoped<BaseUrlConfiguration>(sp => baseUrlConfig);
155155
// Blazor Admin Required Services for Prerendering
156156
services.AddScoped<HttpClient>(s => new HttpClient
157157
{

0 commit comments

Comments
 (0)