425 references to Identifier
Microsoft.Extensions.Configuration.Binder.SourceGeneration (425)
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 (235)
93
EmitStartBlock($"public static object? {nameof(MethodsToGen_CoreBindingHelper.GetCore)}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, Action<{
Identifier
.BinderOptions}>? {
Identifier
.configureOptions})");
95
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
97
_writer.WriteLine($"{
Identifier
.BinderOptions}? {
Identifier
.binderOptions} = {
Identifier
.GetBinderOptions}({
Identifier
.configureOptions});");
111
EmitStartBlock($"{conditionKindExpr} ({
Identifier
.type} == typeof({type.TypeRef.FullyQualifiedName}))");
119
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.configuration}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
122
Identifier
.value,
132
_writer.WriteLine($"return {
Identifier
.section};");
139
EmitBindingLogic(complexType,
Identifier
.instance,
Identifier
.configuration, InitializationKind.Declaration, ValueDefaulting.CallSetter);
140
_writer.WriteLine($"return {
Identifier
.instance};");
144
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
166
if ({{
Identifier
.configuration}} is not {{
Identifier
.IConfigurationSection}} {{
Identifier
.section}})
168
throw new {{
Identifier
.InvalidOperationException}}();
181
EmitStartBlock($"public static object? {nameof(MethodsToGen_CoreBindingHelper.GetValueCore)}(this {
Identifier
.IConfiguration} {
Identifier
.configuration}, Type {
Identifier
.type}, string {
Identifier
.key})");
183
EmitCheckForNullArgument_WithBlankLine(
Identifier
.configuration, _emitThrowIfNullMethod);
184
_writer.WriteLine($@"{
Identifier
.IConfigurationSection} {
Identifier
.section} = {GetSectionFromConfigurationExpression(
Identifier
.key, addQuotes: false)};");
187
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}) && !string.IsNullOrEmpty({
Identifier
.value}))");
193
EmitStartBlock($"{conditionKindExpr} ({
Identifier
.type} == typeof({type.TypeRef.FullyQualifiedName}))");
197
Identifier
.value,
220
EmitStartBlock($"public static void {nameof(MethodsToGen_CoreBindingHelper.BindCoreMain)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, object {
Identifier
.instance}, Type {
Identifier
.type}, {TypeDisplayString.NullableActionOfBinderOptions} {
Identifier
.configureOptions})");
221
EmitCheckForNullArgument_WithBlankLine(
Identifier
.instance, _emitThrowIfNullMethod, voidReturn: true);
223
_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};");
235
EmitBindingLogic(type,
Identifier
.temp,
Identifier
.configuration, InitializationKind.None, ValueDefaulting.None);
262
string objParameterExpression = $"ref {type.TypeRef.FullyQualifiedName} {
Identifier
.instance}";
263
EmitStartBlock(@$"public static void {nameof(MethodsToGen_CoreBindingHelper.BindCore)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, {objParameterExpression}, bool defaultValueIfNotFound, {
Identifier
.BinderOptions}? {
Identifier
.binderOptions})");
325
EmitStartBlock($"public static {type.TypeRef.FullyQualifiedName} {GetInitializeMethodDisplayString(type)}({
Identifier
.IConfiguration} {
Identifier
.configuration}, {
Identifier
.BinderOptions}? {
Identifier
.binderOptions})");
386
string condition = $@"if ({
Identifier
.configuration}[""{configKeyName}""] is not {parsedMemberDeclarationLhs})";
430
throw new {{
Identifier
.InvalidOperationException}}("{{string.Format(ExceptionMessages.ParameterHasNoMatchingConfig, type.FullName, member.Name)}}");
496
public static bool {{
Identifier
.TryGetConfigurationValue}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}}, string {{
Identifier
.key}}, out string? {{
Identifier
.value}})
498
if ({{
Identifier
.configuration}} is {{
Identifier
.ConfigurationSection}} {{
Identifier
.section}})
500
return {{
Identifier
.section}}.TryGetValue({{
Identifier
.key}}, out {{
Identifier
.value}});
503
{{
Identifier
.value}} = {{
Identifier
.key}} != null ? {{
Identifier
.configuration}}[{{
Identifier
.key}}] : {{
Identifier
.configuration}} is {{
Identifier
.IConfigurationSection}} sec ? sec.Value : null;
504
return {{
Identifier
.value}} != null;
512
string exceptionMessage = string.Format(ExceptionMessages.MissingConfig,
Identifier
.ErrorOnUnknownConfiguration,
Identifier
.BinderOptions, $"{{{
Identifier
.type}}}", $@"{{string.Join("", "", {
Identifier
.temp})}}");
517
public static void {{
Identifier
.ValidateConfigurationKeys}}(Type {{
Identifier
.type}}, {{TypeDisplayString.LazyHashSetOfString}} {{keysIdentifier}}, {{
Identifier
.IConfiguration}} {{
Identifier
.configuration}}, {{
Identifier
.BinderOptions}}? {{
Identifier
.binderOptions}})
519
if ({{
Identifier
.binderOptions}}?.{{
Identifier
.ErrorOnUnknownConfiguration}} is true)
521
{{TypeDisplayString.ListOfString}}? {{
Identifier
.temp}} = null;
523
foreach ({{
Identifier
.IConfigurationSection}} {{
Identifier
.section}} in {{
Identifier
.configuration}}.{{
Identifier
.GetChildren}}())
527
({{
Identifier
.temp}} ??= new {{TypeDisplayString.ListOfString}}()).Add($"'{{{Expression.sectionKey}}}'");
531
if ({{
Identifier
.temp}} is not null)
543
public static bool {{
Identifier
.HasValueOrChildren}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}})
545
if (({{
Identifier
.configuration}} as {{
Identifier
.IConfigurationSection}})?.{{
Identifier
.Value}} is not null)
549
return {{MethodsToGen_CoreBindingHelper.AsConfigWithChildren}}({{
Identifier
.configuration}}) is not null;
557
public static {{
Identifier
.IConfiguration}}? {{MethodsToGen_CoreBindingHelper.AsConfigWithChildren}}({{
Identifier
.IConfiguration}} {{
Identifier
.configuration}})
559
foreach ({{
Identifier
.IConfigurationSection}} _ in {{
Identifier
.configuration}}.{{
Identifier
.GetChildren}}())
561
return {{
Identifier
.configuration}};
571
public static {{
Identifier
.BinderOptions}}? {{
Identifier
.GetBinderOptions}}({{TypeDisplayString.NullableActionOfBinderOptions}} {{
Identifier
.configureOptions}})
573
if ({{
Identifier
.configureOptions}} is null)
578
{{
Identifier
.BinderOptions}} {{
Identifier
.binderOptions}} = new();
579
{{
Identifier
.configureOptions}}({{
Identifier
.binderOptions}});
581
if ({{
Identifier
.binderOptions}}.BindNonPublicProperties)
586
return {{
Identifier
.binderOptions}};
593
string exceptionArg1 = string.Format(ExceptionMessages.FailedBinding, $"{{{
Identifier
.value} ?? \"null\"}}", $"{{{
Identifier
.path}}}", $"{{typeof(T)}}");
603
catch ({{
Identifier
.Exception}} {{
Identifier
.exception}})
605
throw new {{
Identifier
.InvalidOperationException}}($"{{exceptionArg1}}", {{
Identifier
.exception}});
616
string invariantCultureExpression = $"{
Identifier
.CultureInfo}.InvariantCulture";
623
parsedValueExpr = $"Convert.FromBase64String({
Identifier
.value})";
628
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {
Identifier
.NumberStyles}.Integer, {invariantCultureExpression})";
633
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {
Identifier
.NumberStyles}.Float, {invariantCultureExpression})";
638
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value})";
643
parsedValueExpr = $"{typeFQN}.{
Identifier
.Parse}({
Identifier
.value}, {invariantCultureExpression})"; ;
648
parsedValueExpr = $"{
Identifier
.CultureInfo}.GetCultureInfo({
Identifier
.value})";
653
parsedValueExpr = $"new Uri({
Identifier
.value}, UriKind.RelativeOrAbsolute)";
663
string exceptionArg1 = string.Format(ExceptionMessages.FailedBinding, $"{{{
Identifier
.value} ?? \"null\"}}", $"{{{
Identifier
.path}}}", $"{{typeof({typeFQN})}}");
665
EmitStartBlock($"public static {typeFQN} {TypeIndex.GetParseMethodName(type)}(string {
Identifier
.value}, string? {
Identifier
.path})");
671
catch ({{
Identifier
.Exception}} {{
Identifier
.exception}})
673
throw new {{
Identifier
.InvalidOperationException}}($"{{exceptionArg1}}", {{
Identifier
.exception}});
682
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
694
{{
Identifier
.Int32}} {{
Identifier
.originalCount}} = {{
Identifier
.instance}}.{{
Identifier
.Length}};
695
{{
Identifier
.Array}}.{{
Identifier
.Resize}}(ref {{
Identifier
.instance}}, {{
Identifier
.originalCount}} + {{tempIdentifier}}.{{
Identifier
.Count}});
696
{{tempIdentifier}}.{{
Identifier
.CopyTo}}({{
Identifier
.instance}}, {{
Identifier
.originalCount}});
710
string addExpr = $"{enumerableIdentifier}.{
Identifier
.Add}";
716
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
719
Identifier
.value,
728
_writer.WriteLine($"{addExpr}({
Identifier
.section});");
738
EmitBindingLogic(complexType,
Identifier
.value,
Identifier
.section, InitializationKind.Declaration, ValueDefaulting.None);
739
_writer.WriteLine($"{addExpr}({
Identifier
.value});");
755
EmitStartBlock($"if (!string.IsNullOrEmpty({Expression.sectionValue}) && !{
Identifier
.section}.{
Identifier
.GetChildren}().{
Identifier
.Any}())");
783
EmitStartBlock($"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.section}, {
Identifier
.key}: null, out string? {
Identifier
.value}))");
786
Identifier
.value,
795
_writer.WriteLine($"{instanceIdentifier}[{parsedKeyExpr}] = {
Identifier
.section};");
803
_writer.WriteLine($"{keyType.TypeRef.FullyQualifiedName} {
Identifier
.key} = {parsedKeyExpr};");
804
parsedKeyExpr =
Identifier
.key;
808
string expressionForElementIsNotNull = $"{
Identifier
.element} is not null";
811
string expressionForElementExists = $"{instanceIdentifier}.{
Identifier
.TryGetValue}({parsedKeyExpr}, out {elementTypeDisplayString} {
Identifier
.element})";
823
EmitObjectInit(complexElementType,
Identifier
.element, InitializationKind.SimpleAssignment,
Identifier
.section);
839
Identifier
.element,
840
Identifier
.section,
844
_writer.WriteLine($"{instanceIdentifier}[{parsedKeyExpr}] = {
Identifier
.element};");
859
string validateMethodCallExpr = $"{
Identifier
.ValidateConfigurationKeys}(typeof({type.TypeRef.FullyQualifiedName}), {keyCacheFieldName}, {
Identifier
.configuration}, {
Identifier
.binderOptions});";
866
string containingTypeRef = property.IsStatic ? type.TypeRef.FullyQualifiedName :
Identifier
.instance;
896
string valueIdentifier = GetIncrementalIdentifier(
Identifier
.value);
897
EmitStartBlock($@"if ({
Identifier
.TryGetConfigurationValue}({
Identifier
.configuration}, {
Identifier
.key}: ""{member.ConfigurationKeyName}"", out string? {valueIdentifier}))");
970
string configSection = GetIncrementalIdentifier(
Identifier
.value);
974
string sectionIdentifier = GetIncrementalIdentifier(
Identifier
.section);
976
EmitStartBlock($"if ({sectionValidationCall} is {
Identifier
.IConfigurationSection} {sectionIdentifier})");
986
string valueIdentifier = GetIncrementalIdentifier(
Identifier
.value);
987
EmitStartBlock($@"if ({memberAccessExpr} is null && {
Identifier
.TryGetConfigurationValue}({configSection}, {
Identifier
.key}: null, out string? {valueIdentifier}) && {valueIdentifier} == string.Empty)");
988
_writer.WriteLine($"{memberAccessExpr} = global::System.{
Identifier
.Array}.Empty<{((CollectionSpec)complexType).ElementTypeRef.FullyQualifiedName}>();");
1009
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1026
string nullableTempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1031
$"{effectiveMemberTypeFQN} {tempIdentifier} = {nullableTempIdentifier}.{
Identifier
.HasValue} ? {nullableTempIdentifier}.{
Identifier
.Value} : new {effectiveMemberTypeFQN}();");
1105
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
1112
string tempIdentifier = GetIncrementalIdentifier(
Identifier
.temp);
1130
string bindCoreCall = $@"{nameof(MethodsToGen_CoreBindingHelper.BindCore)}({configArgExpr}, ref {instanceToBindExpr}, defaultValueIfNotFound: {FormatDefaultValueIfNotFound()}, {
Identifier
.binderOptions});";
1150
_writer.WriteLine($@"throw new {
Identifier
.InvalidOperationException}(""{exMsg}"");");
1251
initExpr = $"{initMethodIdentifier}({configArgExpr}, {
Identifier
.binderOptions})";
1309
if (!{{
Identifier
.HasValueOrChildren}}({{
Identifier
.configuration}}))
1321
instanceIdentifier =
Identifier
.instance;
1325
instanceIdentifier =
Identifier
.temp;
1331
if ({{
Identifier
.instance}} is not {{castExpression}})
1340
{{castExpression}} = {{
Identifier
.instance}};
1349
EmitStartBlock($"foreach ({
Identifier
.IConfigurationSection} {
Identifier
.section} in {
Identifier
.configuration}.{
Identifier
.GetChildren}())");
1355
=> $@"{GetSectionFromConfigurationExpression(configurationKeyName)}.{
Identifier
.Path}";
1360
return $@"{
Identifier
.configuration}.{
Identifier
.GetSection}({argExpr})";
Emitter\Helpers.cs (3)
56
public const string OptionsBuilderOfTOptions = $"global::Microsoft.Extensions.Options.OptionsBuilder<{
Identifier
.TOptions}>";
167
_writer.WriteLine($@"[{
Identifier
.InterceptsLocation}(@""{info.FilePath}"", {info.LineNumber}, {info.CharacterNumber})]");
174
_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");