432 references to Identifier
Microsoft.Extensions.Configuration.Binder.SourceGeneration (432)
ConfigurationBindingGenerator.Emitter.cs (2)
59
file static class {{
Identifier
.BindingExtensions}}
69
context.AddSource($"{
Identifier
.BindingExtensions}.g.cs", _writer.ToSourceText());
Emitter\ConfigurationBinder.cs (79)
20
EmitBindingExtStartRegion(
Identifier
.IConfiguration);
35
_writer.WriteLine($"public static T? {
Identifier
.Get}<T>(this {
Identifier
.IConfiguration} {
Identifier
.configuration}) => " +
36
$"(T?)({expressionForGetCore}({
Identifier
.configuration}, typeof(T), {
Identifier
.configureOptions}: null) ?? default(T));");
42
_writer.WriteLine($"public static T? {
Identifier
.Get}<T>(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions}) => " +
43
$"(T?)({expressionForGetCore}({
Identifier
.configuration}, typeof(T), {
Identifier
.configureOptions}) ?? default(T));");
49
_writer.WriteLine($"public static object? {
Identifier
.Get}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}) => " +
50
$"{expressionForGetCore}({
Identifier
.configuration}, {
Identifier
.type}, {
Identifier
.configureOptions}: null);");
56
_writer.WriteLine($"public static object? {
Identifier
.Get}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions}) => " +
57
$"{expressionForGetCore}({
Identifier
.configuration}, {
Identifier
.type}, {
Identifier
.configureOptions});");
63
const string expressionForGetValueCore = $"{
Identifier
.BindingExtensions}.{nameof(MethodsToGen_CoreBindingHelper.GetValueCore)}";
69
_writer.WriteLine($"public static T? {
Identifier
.GetValue}<T>(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, string {
Identifier
.key}) => " +
70
$"(T?)({expressionForGetValueCore}({
Identifier
.configuration}, typeof(T), {
Identifier
.key}) ?? default(T));");
76
EmitNotNullIfNotNull(
Identifier
.defaultValue);
77
_writer.WriteLine($"public static T? {
Identifier
.GetValue}<T>(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, string {
Identifier
.key}, T {
Identifier
.defaultValue}) => " +
78
$"(T?)({expressionForGetValueCore}({
Identifier
.configuration}, typeof(T), {
Identifier
.key}) ?? {
Identifier
.defaultValue});");
84
_writer.WriteLine($"public static object? {
Identifier
.GetValue}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, string {
Identifier
.key}) => " +
85
$"{expressionForGetValueCore}({
Identifier
.configuration}, {
Identifier
.type}, {
Identifier
.key});");
91
EmitNotNullIfNotNull(
Identifier
.defaultValue);
92
_writer.WriteLine($"public static object? {
Identifier
.GetValue}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, string {
Identifier
.key}, object? {
Identifier
.defaultValue}) => " +
93
$"{expressionForGetValueCore}({
Identifier
.configuration}, {
Identifier
.type}, {
Identifier
.key}) ?? {
Identifier
.defaultValue};");
112
string instanceParamExpr = $"object? {
Identifier
.instance}";
119
configExpression:
Identifier
.configuration,
127
additionalParams: $"{instanceParamExpr}, {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions}",
128
configExpression:
Identifier
.configuration,
136
additionalParams: $"string {
Identifier
.key}, {instanceParamExpr}",
137
configExpression: $"{Expression.configurationGetSection}({
Identifier
.key})",
150
EmitStartBlock($"public static void {
Identifier
.Bind}_{type.IdentifierCompatibleSubstring}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, {additionalParams})");
155
string binderOptionsArg = configureOptions ? $"{
Identifier
.GetBinderOptions}({
Identifier
.configureOptions})" : $"{
Identifier
.binderOptions}: null";
157
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
158
EmitCheckForNullArgument_WithBlankLine(
Identifier
.instance, _emitThrowIfNullMethod, voidReturn: true);
160
var {{
Identifier
.typedObj}} = ({{type.TypeRef.FullyQualifiedName}}){{
Identifier
.instance}};
161
{{nameof(MethodsToGen_CoreBindingHelper.BindCore)}}({{configExpression}}, ref {{
Identifier
.typedObj}}, defaultValueIfNotFound: false, {{binderOptionsArg}});
Emitter\CoreBindingHelpers.cs (242)
94
EmitStartBlock($"public static object? {nameof(MethodsToGen_CoreBindingHelper.GetCore)}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, Action<{
Identifier
.BinderOptions}>? {
Identifier
.configureOptions})");
96
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
98
_writer.WriteLine($"{
Identifier
.BinderOptions}? {
Identifier
.binderOptions} = {
Identifier
.GetBinderOptions}({
Identifier
.configureOptions});");
112
EmitStartBlock($"{conditionKindExpr} ({
Identifier
.type} == typeof({type.TypeRef.FullyQualifiedName}))");
120
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.configuration}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
123
Identifier
.value,
133
_writer.WriteLine($"return {
Identifier
.section};");
140
EmitBindingLogic(complexType,
Identifier
.instance,
Identifier
.configuration, InitializationKind.Declaration, ValueDefaulting.CallSetter);
141
_writer.WriteLine($"return {
Identifier
.instance};");
145
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
167
if ({{
Identifier
.configuration}} is not {{
Identifier
.IConfigurationSection}} {{
Identifier
.section}})
169
throw new {{
Identifier
.InvalidOperationException}}();
182
EmitStartBlock($"public static object? {nameof(MethodsToGen_CoreBindingHelper.GetValueCore)}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, string {
Identifier
.key})");
184
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
185
_writer.WriteLine($@"{
Identifier
.IConfigurationSection} {
Identifier
.section} = {GetSectionFromConfigurationExpression(
Identifier
.key, addQuotes: false)};");
188
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}) && !string.IsNullOrEmpty({
Identifier
.value}))");
194
EmitStartBlock($"{conditionKindExpr} ({
Identifier
.type} == typeof({type.TypeRef.FullyQualifiedName}))");
198
Identifier
.value,
221
EmitStartBlock($"public static void {nameof(MethodsToGen_CoreBindingHelper.BindCoreMain)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, object {
Identifier
.instance}, Type {
Identifier
.type}, {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions})");
222
EmitCheckForNullArgument_WithBlankLine(
Identifier
.instance, _emitThrowIfNullMethod, voidReturn: true);
224
_writer.WriteLine($"{
Identifier
.BinderOptions}? {
Identifier
.binderOptions} = {
Identifier
.GetBinderOptions}({
Identifier
.configureOptions});");
234
EmitStartBlock($"{conditionKindExpr} ({
Identifier
.type} == typeof({type.TypeRef.FullyQualifiedName}))");
235
_writer.WriteLine($"var {
Identifier
.temp} = ({effectiveType.TypeRef.FullyQualifiedName}){
Identifier
.instance};");
236
EmitBindingLogic(type,
Identifier
.temp,
Identifier
.configuration, InitializationKind.None, ValueDefaulting.None);
263
string objParameterExpression = $"ref {type.TypeRef.FullyQualifiedName} {
Identifier
.instance}";
270
? $", bool {
Identifier
.boundThroughConstructor} = false"
273
EmitStartBlock(@$"public static void {nameof(MethodsToGen_CoreBindingHelper.BindCore)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, {objParameterExpression}, bool defaultValueIfNotFound, {
Identifier
.BinderOptions}? {
Identifier
.binderOptions}{boundThroughConstructorParam})");
333
EmitStartBlock($"public static {type.TypeRef.FullyQualifiedName} {GetInitializeMethodDisplayString(type)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, {
Identifier
.BinderOptions}? {
Identifier
.binderOptions})");
396
_writer.WriteLine($"{parsedMemberDeclarationLhs} = {
Identifier
.configuration}[{SymbolDisplay.FormatLiteral(configKeyName, quote: true)}];");
431
throw new {{
Identifier
.InvalidOperationException}}("{{string.Format(ExceptionMessages.ParameterHasNoMatchingConfig, type.FullName, member.Name)}}");
501
public static bool {{
Identifier
.TryGetConfigurationValue}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}}, string {{
Identifier
.key}}, out string? {{
Identifier
.value}})
503
if ({{
Identifier
.configuration}} is {{
Identifier
.ConfigurationSection}} {{
Identifier
.section}})
505
return {{
Identifier
.section}}.TryGetValue({{
Identifier
.key}}, out {{
Identifier
.value}});
508
{{
Identifier
.value}} = {{
Identifier
.key}} != null ? {{
Identifier
.configuration}}[{{
Identifier
.key}}] : {{
Identifier
.configuration}} is {{
Identifier
.IConfigurationSection}} sec ? sec.Value : null;
509
return {{
Identifier
.value}} != null;
517
string exceptionMessage = string.Format(ExceptionMessages.MissingConfig,
Identifier
.ErrorOnUnknownConfiguration,
Identifier
.BinderOptions, $"{{{
Identifier
.type}}}", $@"{{string.Join("", "", {
Identifier
.temp})}}");
522
public static void {{
Identifier
.ValidateConfigurationKeys}}(Type {{
Identifier
.type}}, {{TypeDisplayString.LazyHashSetOfString}} {{keysIdentifier}}, {{
Identifier
.IConfiguration}} {{
Identifier
.configuration}}, {{
Identifier
.BinderOptions}}? {{
Identifier
.binderOptions}})
524
if ({{
Identifier
.binderOptions}}?.{{
Identifier
.ErrorOnUnknownConfiguration}} is true)
526
{{TypeDisplayString.ListOfString}}? {{
Identifier
.temp}} = null;
528
foreach ({{
Identifier
.IConfigurationSection}} {{
Identifier
.section}} in {{
Identifier
.configuration}}.{{
Identifier
.GetChildren}}())
532
({{
Identifier
.temp}} ??= new {{TypeDisplayString.ListOfString}}()).Add($"'{{{Expression.sectionKey}}}'");
536
if ({{
Identifier
.temp}} is not null)
548
public static bool {{
Identifier
.HasValueOrChildren}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}})
550
if (({{
Identifier
.configuration}} as {{
Identifier
.IConfigurationSection}})?.{{
Identifier
.Value}} is not null)
554
return {{MethodsToGen_CoreBindingHelper.AsConfigWithChildren}}({{
Identifier
.configuration}}) is not null;
562
public static {{
Identifier
.IConfiguration}}? {{MethodsToGen_CoreBindingHelper.AsConfigWithChildren}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}})
564
foreach ({{
Identifier
.IConfigurationSection}} _ in {{
Identifier
.configuration}}.{{
Identifier
.GetChildren}}())
566
return {{
Identifier
.configuration}};
576
public static {{
Identifier
.BinderOptions}}? {{
Identifier
.GetBinderOptions}}({{TypeDisplayString.NullableActionOfBinderOptions}} {{
Identifier
.configureOptions}})
578
if ({{
Identifier
.configureOptions}} is null)
583
{{
Identifier
.BinderOptions}} {{
Identifier
.binderOptions}} = new();
584
{{
Identifier
.configureOptions}}({{
Identifier
.binderOptions}});
586
if ({{
Identifier
.binderOptions}}.BindNonPublicProperties)
591
return {{
Identifier
.binderOptions}};
598
string exceptionArg1 = string.Format(ExceptionMessages.FailedBinding, $"{{{
Identifier
.value} ?? \"null\"}}", $"{{{
Identifier
.path}}}", $"{{typeof(T)}}");
608
catch ({{
Identifier
.Exception}} {{
Identifier
.exception}})
610
throw new {{
Identifier
.InvalidOperationException}}($"{{exceptionArg1}}", {{
Identifier
.exception}});
621
string invariantCultureExpression = $"{
Identifier
.CultureInfo}.InvariantCulture";
628
parsedValueExpr = $"Convert.FromBase64String({
Identifier
.value})";
633
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {
Identifier
.NumberStyles}.Integer, {invariantCultureExpression})";
638
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {
Identifier
.NumberStyles}.Float, {invariantCultureExpression})";
643
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value})";
648
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {invariantCultureExpression})"; ;
653
parsedValueExpr = $"{
Identifier
.CultureInfo}.GetCultureInfo({
Identifier
.value})";
658
parsedValueExpr = $"new Uri({
Identifier
.value}, UriKind.RelativeOrAbsolute)";
668
string exceptionArg1 = string.Format(ExceptionMessages.FailedBinding, $"{{{
Identifier
.value} ?? \"null\"}}", $"{{{
Identifier
.path}}}", $"{{typeof({typeFQN})}}");
670
EmitStartBlock($"public static {typeFQN} {TypeIndex.GetParseMethodName(type)}(string {
Identifier
.value}, string? {
Identifier
.path})");
676
catch ({{
Identifier
.Exception}} {{
Identifier
.exception}})
678
throw new {{
Identifier
.InvalidOperationException}}($"{{exceptionArg1}}", {{
Identifier
.exception}});
687
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
699
{{
Identifier
.Int32}} {{
Identifier
.originalCount}} = {{
Identifier
.instance}}.{{
Identifier
.Length}};
700
{{
Identifier
.Array}}.{{
Identifier
.Resize}}(ref {{
Identifier
.instance}}, {{
Identifier
.originalCount}} + {{tempIdentifier}}.{{
Identifier
.Count}});
701
{{tempIdentifier}}.{{
Identifier
.CopyTo}}({{
Identifier
.instance}}, {{
Identifier
.originalCount}});
715
string addExpr = $"{enumerableIdentifier}.{
Identifier
.Add}";
721
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
724
Identifier
.value,
733
_writer.WriteLine($"{addExpr}({
Identifier
.section});");
743
EmitBindingLogic(complexType,
Identifier
.value,
Identifier
.section, InitializationKind.Declaration, ValueDefaulting.None);
744
_writer.WriteLine($"{addExpr}({
Identifier
.value});");
760
EmitStartBlock($"if (!string.IsNullOrEmpty({Expression.sectionValue}) && !{
Identifier
.section}.{
Identifier
.GetChildren}().{
Identifier
.Any}())");
788
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
791
Identifier
.value,
800
_writer.WriteLine($"{instanceIdentifier}[{parsedKeyExpr}] = {
Identifier
.section};");
808
_writer.WriteLine($"{keyType.TypeRef.FullyQualifiedName} {
Identifier
.key} = {parsedKeyExpr};");
809
parsedKeyExpr =
Identifier
.key;
813
string expressionForElementIsNotNull = $"{
Identifier
.element} is not null";
816
string expressionForElementExists = $"{instanceIdentifier}.{
Identifier
.TryGetValue}({parsedKeyExpr}, out {elementTypeDisplayString} {
Identifier
.element})";
835
constructedExpr = GetIncrementalIdentifier(
Identifier
.boundThroughConstructor);
840
EmitObjectInit(complexElementType,
Identifier
.element, InitializationKind.SimpleAssignment,
Identifier
.section);
860
Identifier
.element,
861
Identifier
.section,
866
_writer.WriteLine($"{instanceIdentifier}[{parsedKeyExpr}] = {
Identifier
.element};");
881
string validateMethodCallExpr = $"{
Identifier
.ValidateConfigurationKeys}(typeof({type.TypeRef.FullyQualifiedName}), {keyCacheFieldName}, {
Identifier
.configuration}, {
Identifier
.binderOptions});";
911
EmitStartBlock($"if (!{
Identifier
.boundThroughConstructor})");
921
string containingTypeRef = property.IsStatic ? type.TypeRef.FullyQualifiedName :
Identifier
.instance;
999
string valueIdentifier = GetIncrementalIdentifier(
Identifier
.value);
1011
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.configuration}, {
Identifier
.key}: {SymbolDisplay.FormatLiteral(member.ConfigurationKeyName, quote: true)}, out string? {valueIdentifier}){valueCondition})");
1094
string configSection = GetIncrementalIdentifier(
Identifier
.value);
1098
string sectionIdentifier = GetIncrementalIdentifier(
Identifier
.section);
1100
EmitStartBlock($"if ({sectionValidationCall} is {
Identifier
.IConfigurationSection} {sectionIdentifier})");
1110
string valueIdentifier = GetIncrementalIdentifier(
Identifier
.value);
1111
EmitStartBlock($@"if ({memberAccessExpr} is null && {
Identifier
.TryGetConfigurationValue}({configSection}, {
Identifier
.key}: null, out string? {valueIdentifier}) && {valueIdentifier} == string.Empty)");
1112
_writer.WriteLine($"{memberAccessExpr} = global::System.{
Identifier
.Array}.Empty<{((CollectionSpec)complexType).ElementTypeRef.FullyQualifiedName}>();");
1134
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1151
string nullableTempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1156
$"{effectiveMemberTypeFQN} {tempIdentifier} = {nullableTempIdentifier}.{
Identifier
.HasValue} ? {nullableTempIdentifier}.{
Identifier
.Value} : new {effectiveMemberTypeFQN}();");
1248
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
1255
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1300
string wasNullIdentifier = GetIncrementalIdentifier(
Identifier
.wasNull);
1302
boundThroughConstructorArg = $", {
Identifier
.boundThroughConstructor}: {wasNullIdentifier}";
1306
boundThroughConstructorArg = $", {
Identifier
.boundThroughConstructor}: true";
1318
boundThroughConstructorArg = $", {
Identifier
.boundThroughConstructor}: {constructedExpr}";
1332
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
1339
string bindCoreCall = $@"{nameof(MethodsToGen_CoreBindingHelper.BindCore)}({configArgExpr}, ref {instanceToBindExpr}, defaultValueIfNotFound: {FormatDefaultValueIfNotFound()}, {
Identifier
.binderOptions}{boundThroughConstructorArg});";
1434
initExpr = $"{initMethodIdentifier}({configArgExpr}, {
Identifier
.binderOptions})";
1492
if (!{{
Identifier
.HasValueOrChildren}}({{
Identifier
.configuration}}))
1504
instanceIdentifier =
Identifier
.instance;
1508
instanceIdentifier =
Identifier
.temp;
1514
if ({{
Identifier
.instance}} is not {{castExpression}})
1523
{{castExpression}} = {{
Identifier
.instance}};
1532
EmitStartBlock($"foreach ({
Identifier
.IConfigurationSection} {
Identifier
.section} in {
Identifier
.configuration}.{
Identifier
.GetChildren}())");
1538
=> $@"{GetSectionFromConfigurationExpression(configurationKeyName)}.{
Identifier
.Path}";
1543
return $@"{
Identifier
.configuration}.{
Identifier
.GetSection}({argExpr})";
Emitter\Helpers.cs (3)
57
public const string OptionsBuilderOfTOptions = $"global::Microsoft.Extensions.Options.OptionsBuilder<{
Identifier
.TOptions}>";
170
_writer.WriteLine($@"[{
Identifier
.InterceptsLocation}(@""{info.FilePath}"", {info.LineNumber}, {info.CharacterNumber})]");
177
_writer.WriteLine($@"[{
Identifier
.InterceptsLocation}({info.InterceptableLocationVersion}, ""{info.InterceptableLocationData}"")] // {info.InterceptableLocationGetDisplayLocation()}");
Emitter\OptionsBuilderConfigurationExtensions.cs (56)
31
const string paramList = $"{
Identifier
.IConfiguration} {
Identifier
.config}";
36
_writer.WriteLine($"return Bind({
Identifier
.optionsBuilder}, {
Identifier
.config}, {
Identifier
.configureBinder}: null);");
43
paramList + $", {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureBinder}",
46
EmitCheckForNullArgument_WithBlankLine(
Identifier
.optionsBuilder, _emitThrowIfNullMethod);
49
{{
Identifier
.Configure}}<{{
Identifier
.TOptions}}>({{
Identifier
.optionsBuilder}}.{{
Identifier
.Services}}, {{
Identifier
.optionsBuilder}}.{{
Identifier
.Name}}, {{
Identifier
.config}}, {{
Identifier
.configureBinder}});
50
return {{
Identifier
.optionsBuilder}};
63
const string documentation = $@"/// <summary>Registers the dependency injection container to bind <typeparamref name=""TOptions""/> against the <see cref=""{
Identifier
.IConfiguration}""/> obtained from the DI service provider.</summary>";
64
string paramList = $"string {
Identifier
.configSectionPath}, {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureBinder} = null";
68
EmitCheckForNullArgument_WithBlankLine(
Identifier
.optionsBuilder, _emitThrowIfNullMethod);
69
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configSectionPath, _emitThrowIfNullMethod);
71
EmitStartBlock($"{
Identifier
.optionsBuilder}.{
Identifier
.Configure}<{
Identifier
.IConfiguration}>(({
Identifier
.instance}, {
Identifier
.config}) =>");
72
EmitCheckForNullArgument_WithBlankLine(
Identifier
.config, _emitThrowIfNullMethod);
74
{{
Identifier
.IConfiguration}} {{
Identifier
.section}} = string.Equals(string.Empty, {{
Identifier
.configSectionPath}}, StringComparison.OrdinalIgnoreCase) ? {{
Identifier
.config}} : {{
Identifier
.config}}.{{
Identifier
.GetSection}}({{
Identifier
.configSectionPath}});
75
{{nameof(MethodsToGen_CoreBindingHelper.BindCoreMain)}}({{
Identifier
.section}}, {{
Identifier
.instance}}, typeof({{
Identifier
.TOptions}}), {{
Identifier
.configureBinder}});
82
EmitStartBlock($"{
Identifier
.optionsBuilder}.{
Identifier
.Services}.{
Identifier
.AddSingleton}<{
Identifier
.IOptionsChangeTokenSource}<{
Identifier
.TOptions}>, {
Identifier
.ConfigurationChangeTokenSource}<{
Identifier
.TOptions}>>({
Identifier
.sp} =>");
84
_writer.WriteLine($"return new {
Identifier
.ConfigurationChangeTokenSource}<{
Identifier
.TOptions}>({
Identifier
.optionsBuilder}.{
Identifier
.Name}, {
Identifier
.sp}.GetRequiredService<{
Identifier
.IConfiguration}>());");
90
_writer.WriteLine($"return {
Identifier
.optionsBuilder};");
97
paramList = $"this {TypeDisplayString.OptionsBuilderOfTOptions} {
Identifier
.optionsBuilder}, {paramList}";
101
EmitStartBlock($"public static {TypeDisplayString.OptionsBuilderOfTOptions} {methodName}<{
Identifier
.TOptions}>({paramList}) where {
Identifier
.TOptions} : class");
Emitter\OptionsConfigurationServiceCollectionExtensions.cs (50)
17
EmitBindingExtStartRegion(
Identifier
.IServiceCollection);
25
string configParam = $"{
Identifier
.IConfiguration} {
Identifier
.config}";
30
_writer.WriteLine($"return {
Identifier
.Configure}<{
Identifier
.TOptions}>({
Identifier
.services}, {defaultNameExpr}, {
Identifier
.config}, {
Identifier
.configureOptions}: null);");
38
paramList: $"string? {
Identifier
.name}, " + configParam);
39
_writer.WriteLine($"return {
Identifier
.Configure}<{
Identifier
.TOptions}>({
Identifier
.services}, {
Identifier
.name}, {
Identifier
.config}, {
Identifier
.configureOptions}: null);");
47
paramList: configParam + $", {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions}");
48
_writer.WriteLine($"return {
Identifier
.Configure}<{
Identifier
.TOptions}>({
Identifier
.services}, {defaultNameExpr}, {
Identifier
.config}, {
Identifier
.configureOptions});");
55
EmitStartMethod(MethodsToGen.ServiceCollectionExt_Configure_T_name_BinderOptions, paramList: $"string? {
Identifier
.name}, " + configParam + $", {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions}");
56
EmitCheckForNullArgument_WithBlankLine(
Identifier
.services, _emitThrowIfNullMethod);
57
EmitCheckForNullArgument_WithBlankLine(
Identifier
.config, _emitThrowIfNullMethod);
59
OptionsServiceCollectionExtensions.AddOptions({{
Identifier
.services}});
60
{{
Identifier
.services}}.{{
Identifier
.AddSingleton}}<{{
Identifier
.IOptionsChangeTokenSource}}<{{
Identifier
.TOptions}}>>(new {{
Identifier
.ConfigurationChangeTokenSource}}<{{
Identifier
.TOptions}}>({{
Identifier
.name}}, {{
Identifier
.config}}));
61
return {{
Identifier
.services}}.{{
Identifier
.AddSingleton}}<IConfigureOptions<{{
Identifier
.TOptions}}>>(new ConfigureNamedOptions<{{
Identifier
.TOptions}}>({{
Identifier
.name}}, {{
Identifier
.instance}} => {{nameof(MethodsToGen_CoreBindingHelper.BindCoreMain)}}({{
Identifier
.config}}, {{
Identifier
.instance}}, typeof({{
Identifier
.TOptions}}), {{
Identifier
.configureOptions}})));
68
paramList = $"this {
Identifier
.IServiceCollection} {
Identifier
.services}, {paramList}";
73
EmitStartBlock($"public static {
Identifier
.IServiceCollection} {
Identifier
.Configure}<{
Identifier
.TOptions}>({paramList}) where {
Identifier
.TOptions} : class");