[ASP.NET Core 3 프레임워크 폭로] Options[7]: 구성 시스템과 통합
4
4
첫 번째 문제는 Options 대상에 대한 초기화 문제와 관련된다. 이것은 자연히 사용자 정의 IConfigure Options 실현 유형을 통해 해결된 것이다. 구체적으로 말하면 아래의 NamedConfigure FromConfiguration Options 유형이다. 이것은NuGet 패키지'Microsoft.Extensions.options.ConfigurationExtensions'에 정의된다.아래 코드 세션에서 보듯이 NamedConfigureFromConfigurationOptions는ConfigurationBinder의 정적 방법인 Bind를 호출하여 설정 귀속 메커니즘을 이용하여 설정 데이터가 Options 대상으로의 전환을 실현한다.
public class NamedConfigureFromConfigurationOptions : ConfigureNamedOptions where TOptions : class
{
public NamedConfigureFromConfigurationOptions(string name, IConfiguration config)
: base(name, options => ConfigurationBinder.Bind(config, options))
{}
}
두 번째 문제는 사용자 정의의 IOptions ChangeToken Source 실현 유형을 이용하여 해결한다. 구체적으로 제공된 것은 아래의Configuration ChangeToken Source이다.제시된 코드 세션에서 알 수 있듯이 GetChangeToken 방법은 IConfiguration 대상의 GetReloadToken 방법을 직접 호출하여 되돌아오는 IChangeToken 대상이다.
public class ConfigurationChangeTokenSource : IOptionsChangeTokenSource
{
private IConfiguration _config;
public string Name { get; }
public ConfigurationChangeTokenSource(IConfiguration config) : this(Options.DefaultName, config)
{ }
public ConfigurationChangeTokenSource(string name, IConfiguration config)
{
_config = config;
Name = name ?? Options.DefaultName;
}
public IChangeToken GetChangeToken() => _config.GetReloadToken()
}
IConfiguration 대상을 Options 대상으로 묶은 Named Configure From Configuration Options와 설정 데이터의 변화를 측정하는 Configuration Change Token Source는 아래의 Configure 확장 방법을 통해 등록되었다.
public static class OptionsConfigurationServiceCollectionExtensions
{
public static IServiceCollection Configure( this IServiceCollection services, IConfiguration config) where TOptions : class
=> services.Configure(Options.Options.DefaultName, config);
public static IServiceCollection Configure( this IServiceCollection services, string name, IConfiguration config) where TOptions : class
=> services
.AddSingleton>( new ConfigurationChangeTokenSource(name, config))
.AddSingleton>( new NamedConfigureFromConfigurationOptions(name, config));
}
[ASP.NET Core 3 프레임워크 폭로] Options[1]: 설정 옵션의 정확한 사용 방식 [전편] [ASP.NET Core 3 프레임워크 폭로] Options[2]: 설정 옵션의 정확한 사용 방식 [하편] [ASP.NET Core 3 프레임워크 폭로] Options[3]: Options 모델 [전편] [ASP.NET Core 3 프레임워크 폭로] Options[4]: Options 모델 [하편] [ASP.NET Core 3 프레임워크 폭로] Options 주입[ASP.NET Core 3 프레임워크 폭로] Options[6]: 확장 및 맞춤형 [ASP.NET Core 3 프레임워크 폭로] Options[7]: 설정 시스템과 통합
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.