438 references to Identifier
Microsoft.Extensions.Configuration.Binder.SourceGeneration (438)
ConfigurationBindingGenerator.Emitter.cs (2)
59
file static class {{
Identifier
.BindingExtensions}}
69
context.AddSource($"{
Identifier
.BindingExtensions}.g.cs", _writer.ToSourceText());
Emitter\ConfigurationBinder.cs (85)
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})",
146
bool resolvesSection = configExpression !=
Identifier
.configuration;
153
EmitStartBlock($"public static void {
Identifier
.Bind}_{type.IdentifierCompatibleSubstring}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, {additionalParams})");
158
string binderOptionsArg = configureOptions ? $"{
Identifier
.GetBinderOptions}({
Identifier
.configureOptions})" : $"{
Identifier
.binderOptions}: null";
160
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
161
EmitCheckForNullArgument_WithBlankLine(
Identifier
.instance, _emitThrowIfNullMethod, voidReturn: true);
163
var {{
Identifier
.typedObj}} = ({{type.TypeRef.FullyQualifiedName}}){{
Identifier
.instance}};
164
{{nameof(MethodsToGen_CoreBindingHelper.BindCore)}}({{configExpression}}, ref {{
Identifier
.typedObj}}, defaultValueIfNotFound: false, {{binderOptionsArg}});
176
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
177
EmitCheckForNullArgument_WithBlankLine(
Identifier
.instance, _emitThrowIfNullMethod, voidReturn: true);
178
_writer.WriteLine($"{
Identifier
.GetBinderOptions}({
Identifier
.configureOptions});");
182
EmitCheckForNullArgument(
Identifier
.configuration, _emitThrowIfNullMethod);
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});");
233
EmitStartBlock($"{conditionKindExpr} ({
Identifier
.type} == typeof({type.TypeRef.FullyQualifiedName}))");
234
_writer.WriteLine($"var {
Identifier
.temp} = ({effectiveType.TypeRef.FullyQualifiedName}){
Identifier
.instance};");
239
EmitBindingLogic(type,
Identifier
.temp,
Identifier
.configuration, InitializationKind.None, ValueDefaulting.None);
266
string objParameterExpression = $"ref {type.TypeRef.FullyQualifiedName} {
Identifier
.instance}";
273
? $", bool {
Identifier
.boundThroughConstructor} = false"
276
EmitStartBlock(@$"public static void {nameof(MethodsToGen_CoreBindingHelper.BindCore)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, {objParameterExpression}, bool defaultValueIfNotFound, {
Identifier
.BinderOptions}? {
Identifier
.binderOptions}{boundThroughConstructorParam})");
336
EmitStartBlock($"public static {type.TypeRef.FullyQualifiedName} {GetInitializeMethodDisplayString(type)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, {
Identifier
.BinderOptions}? {
Identifier
.binderOptions})");
399
_writer.WriteLine($"{parsedMemberDeclarationLhs} = {
Identifier
.configuration}[{SymbolDisplay.FormatLiteral(configKeyName, quote: true)}];");
434
throw new {{
Identifier
.InvalidOperationException}}("{{string.Format(ExceptionMessages.ParameterHasNoMatchingConfig, type.FullName, member.Name)}}");
504
public static bool {{
Identifier
.TryGetConfigurationValue}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}}, string {{
Identifier
.key}}, out string? {{
Identifier
.value}})
506
if ({{
Identifier
.configuration}} is {{
Identifier
.ConfigurationSection}} {{
Identifier
.section}})
508
return {{
Identifier
.section}}.TryGetValue({{
Identifier
.key}}, out {{
Identifier
.value}});
511
{{
Identifier
.value}} = {{
Identifier
.key}} != null ? {{
Identifier
.configuration}}[{{
Identifier
.key}}] : {{
Identifier
.configuration}} is {{
Identifier
.IConfigurationSection}} sec ? sec.Value : null;
512
return {{
Identifier
.value}} != null;
520
string exceptionMessage = string.Format(ExceptionMessages.MissingConfig,
Identifier
.ErrorOnUnknownConfiguration,
Identifier
.BinderOptions, $"{{{
Identifier
.type}}}", $@"{{string.Join("", "", {
Identifier
.temp})}}");
525
public static void {{
Identifier
.ValidateConfigurationKeys}}(Type {{
Identifier
.type}}, {{TypeDisplayString.LazyHashSetOfString}} {{keysIdentifier}}, {{
Identifier
.IConfiguration}} {{
Identifier
.configuration}}, {{
Identifier
.BinderOptions}}? {{
Identifier
.binderOptions}})
527
if ({{
Identifier
.binderOptions}}?.{{
Identifier
.ErrorOnUnknownConfiguration}} is true)
529
{{TypeDisplayString.ListOfString}}? {{
Identifier
.temp}} = null;
531
foreach ({{
Identifier
.IConfigurationSection}} {{
Identifier
.section}} in {{
Identifier
.configuration}}.{{
Identifier
.GetChildren}}())
535
({{
Identifier
.temp}} ??= new {{TypeDisplayString.ListOfString}}()).Add($"'{{{Expression.sectionKey}}}'");
539
if ({{
Identifier
.temp}} is not null)
551
public static bool {{
Identifier
.HasValueOrChildren}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}})
553
if (({{
Identifier
.configuration}} as {{
Identifier
.IConfigurationSection}})?.{{
Identifier
.Value}} is not null)
557
return {{MethodsToGen_CoreBindingHelper.AsConfigWithChildren}}({{
Identifier
.configuration}}) is not null;
565
public static {{
Identifier
.IConfiguration}}? {{MethodsToGen_CoreBindingHelper.AsConfigWithChildren}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}})
567
foreach ({{
Identifier
.IConfigurationSection}} _ in {{
Identifier
.configuration}}.{{
Identifier
.GetChildren}}())
569
return {{
Identifier
.configuration}};
579
public static {{
Identifier
.BinderOptions}}? {{
Identifier
.GetBinderOptions}}({{TypeDisplayString.NullableActionOfBinderOptions}} {{
Identifier
.configureOptions}})
581
if ({{
Identifier
.configureOptions}} is null)
586
{{
Identifier
.BinderOptions}} {{
Identifier
.binderOptions}} = new();
587
{{
Identifier
.configureOptions}}({{
Identifier
.binderOptions}});
589
if ({{
Identifier
.binderOptions}}.BindNonPublicProperties)
594
return {{
Identifier
.binderOptions}};
601
string exceptionArg1 = string.Format(ExceptionMessages.FailedBinding, $"{{{
Identifier
.value} ?? \"null\"}}", $"{{{
Identifier
.path}}}", $"{{typeof(T)}}");
611
catch ({{
Identifier
.Exception}} {{
Identifier
.exception}})
613
throw new {{
Identifier
.InvalidOperationException}}($"{{exceptionArg1}}", {{
Identifier
.exception}});
624
string invariantCultureExpression = $"{
Identifier
.CultureInfo}.InvariantCulture";
631
parsedValueExpr = $"Convert.FromBase64String({
Identifier
.value})";
636
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {
Identifier
.NumberStyles}.Integer, {invariantCultureExpression})";
641
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {
Identifier
.NumberStyles}.Float, {invariantCultureExpression})";
646
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value})";
651
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {invariantCultureExpression})"; ;
656
parsedValueExpr = $"{
Identifier
.CultureInfo}.GetCultureInfo({
Identifier
.value})";
661
parsedValueExpr = $"new Uri({
Identifier
.value}, UriKind.RelativeOrAbsolute)";
671
string exceptionArg1 = string.Format(ExceptionMessages.FailedBinding, $"{{{
Identifier
.value} ?? \"null\"}}", $"{{{
Identifier
.path}}}", $"{{typeof({typeFQN})}}");
673
EmitStartBlock($"public static {typeFQN} {TypeIndex.GetParseMethodName(type)}(string {
Identifier
.value}, string? {
Identifier
.path})");
679
catch ({{
Identifier
.Exception}} {{
Identifier
.exception}})
681
throw new {{
Identifier
.InvalidOperationException}}($"{{exceptionArg1}}", {{
Identifier
.exception}});
690
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
702
{{
Identifier
.Int32}} {{
Identifier
.originalCount}} = {{
Identifier
.instance}}.{{
Identifier
.Length}};
703
{{
Identifier
.Array}}.{{
Identifier
.Resize}}(ref {{
Identifier
.instance}}, {{
Identifier
.originalCount}} + {{tempIdentifier}}.{{
Identifier
.Count}});
704
{{tempIdentifier}}.{{
Identifier
.CopyTo}}({{
Identifier
.instance}}, {{
Identifier
.originalCount}});
718
string addExpr = $"{enumerableIdentifier}.{
Identifier
.Add}";
724
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
727
Identifier
.value,
736
_writer.WriteLine($"{addExpr}({
Identifier
.section});");
746
EmitBindingLogic(complexType,
Identifier
.value,
Identifier
.section, InitializationKind.Declaration, ValueDefaulting.None);
747
_writer.WriteLine($"{addExpr}({
Identifier
.value});");
763
EmitStartBlock($"if (!string.IsNullOrEmpty({Expression.sectionValue}) && !{
Identifier
.section}.{
Identifier
.GetChildren}().{
Identifier
.Any}())");
791
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
794
Identifier
.value,
803
_writer.WriteLine($"{instanceIdentifier}[{parsedKeyExpr}] = {
Identifier
.section};");
811
_writer.WriteLine($"{keyType.TypeRef.FullyQualifiedName} {
Identifier
.key} = {parsedKeyExpr};");
812
parsedKeyExpr =
Identifier
.key;
816
string expressionForElementIsNotNull = $"{
Identifier
.element} is not null";
819
string expressionForElementExists = $"{instanceIdentifier}.{
Identifier
.TryGetValue}({parsedKeyExpr}, out {elementTypeDisplayString} {
Identifier
.element})";
838
constructedExpr = GetIncrementalIdentifier(
Identifier
.boundThroughConstructor);
843
EmitObjectInit(complexElementType,
Identifier
.element, InitializationKind.SimpleAssignment,
Identifier
.section);
863
Identifier
.element,
864
Identifier
.section,
869
_writer.WriteLine($"{instanceIdentifier}[{parsedKeyExpr}] = {
Identifier
.element};");
884
string validateMethodCallExpr = $"{
Identifier
.ValidateConfigurationKeys}(typeof({type.TypeRef.FullyQualifiedName}), {keyCacheFieldName}, {
Identifier
.configuration}, {
Identifier
.binderOptions});";
914
EmitStartBlock($"if (!{
Identifier
.boundThroughConstructor})");
924
string containingTypeRef = property.IsStatic ? type.TypeRef.FullyQualifiedName :
Identifier
.instance;
1003
string valueIdentifier = GetIncrementalIdentifier(
Identifier
.value);
1015
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.configuration}, {
Identifier
.key}: {SymbolDisplay.FormatLiteral(member.ConfigurationKeyName, quote: true)}, out string? {valueIdentifier}){valueCondition})");
1095
string configSection = GetIncrementalIdentifier(
Identifier
.value);
1099
string sectionIdentifier = GetIncrementalIdentifier(
Identifier
.section);
1101
EmitStartBlock($"if ({sectionValidationCall} is {
Identifier
.IConfigurationSection} {sectionIdentifier})");
1111
string valueIdentifier = GetIncrementalIdentifier(
Identifier
.value);
1112
EmitStartBlock($@"if ({memberAccessExpr} is null && {
Identifier
.TryGetConfigurationValue}({configSection}, {
Identifier
.key}: null, out string? {valueIdentifier}) && {valueIdentifier} == string.Empty)");
1113
_writer.WriteLine($"{memberAccessExpr} = global::System.{
Identifier
.Array}.Empty<{((CollectionSpec)complexType).ElementTypeRef.FullyQualifiedName}>();");
1135
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1159
string nullableTempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1164
$"{effectiveMemberTypeFQN} {tempIdentifier} = {nullableTempIdentifier}.{
Identifier
.HasValue} ? {nullableTempIdentifier}.{
Identifier
.Value} : new {effectiveMemberTypeFQN}();");
1262
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
1269
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1314
string wasNullIdentifier = GetIncrementalIdentifier(
Identifier
.wasNull);
1316
boundThroughConstructorArg = $", {
Identifier
.boundThroughConstructor}: {wasNullIdentifier}";
1320
boundThroughConstructorArg = $", {
Identifier
.boundThroughConstructor}: true";
1332
boundThroughConstructorArg = $", {
Identifier
.boundThroughConstructor}: {constructedExpr}";
1346
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
1355
string bindCoreCall = $@"{nameof(MethodsToGen_CoreBindingHelper.BindCore)}({configArgExpr}, ref {instanceToBindExpr}, defaultValueIfNotFound: {FormatDefaultValueIfNotFound()}, {
Identifier
.binderOptions}{boundThroughConstructorArg});";
1452
initExpr = $"{initMethodIdentifier}({configArgExpr}, {
Identifier
.binderOptions})";
1510
if (!{{
Identifier
.HasValueOrChildren}}({{
Identifier
.configuration}}))
1522
instanceIdentifier =
Identifier
.instance;
1526
instanceIdentifier =
Identifier
.temp;
1532
if ({{
Identifier
.instance}} is not {{castExpression}})
1541
{{castExpression}} = {{
Identifier
.instance}};
1550
EmitStartBlock($"foreach ({
Identifier
.IConfigurationSection} {
Identifier
.section} in {
Identifier
.configuration}.{
Identifier
.GetChildren}())");
1556
=> $@"{GetSectionFromConfigurationExpression(configurationKeyName)}.{
Identifier
.Path}";
1561
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");