-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C# 9 positional records - support for Microsoft.Extensions.Configuration.ConfigurationBinder #46299
Comments
Tagging subscribers to this area: @safern Issue DetailsDescriptionappsettings.json {
"Azure": {
"BaseUrl": "https://azure.com",
"TenantId": "Id"
}
} record public sealed record AzureInfo(string BaseUrl, string TenantId); Startup.cs var appInfo = configuration.GetSection("Azure").Get<AzureInfo>(); Getting exception System.InvalidOperationException: Cannot create instance of type 'AzureInfo' because it is missing a public parameterless constructor.
at Microsoft.Extensions.Configuration.ConfigurationBinder.CreateInstance(Type type)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get(IConfiguration configuration, Type type, Action`1 configureOptions)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration, Action`1 configureOptions)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration) Configurationmcr.microsoft.com/dotnet/sdk:latest Other informationThe extension is located here: https://github.com/dotnet/runtime/blob/0fad9d646359c71f4d5e9443500fd9248ce10aa4/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs WorkaroundIf I change my record to this it works public sealed record AzureInfo {
public string BaseUrl { get; init; }
public string TenantId { get; init; }
}
|
Tagging subscribers to this area: @maryamariyan Issue DetailsDescriptionappsettings.json {
"Azure": {
"BaseUrl": "https://azure.com",
"TenantId": "Id"
}
} record public sealed record AzureInfo(string BaseUrl, string TenantId); Startup.cs var appInfo = configuration.GetSection("Azure").Get<AzureInfo>(); Getting exception System.InvalidOperationException: Cannot create instance of type 'AzureInfo' because it is missing a public parameterless constructor.
at Microsoft.Extensions.Configuration.ConfigurationBinder.CreateInstance(Type type)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get(IConfiguration configuration, Type type, Action`1 configureOptions)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration, Action`1 configureOptions)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration) Configurationmcr.microsoft.com/dotnet/sdk:latest Other informationThe extension is located here: https://github.com/dotnet/runtime/blob/0fad9d646359c71f4d5e9443500fd9248ce10aa4/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs WorkaroundIf I change my record to this it works public sealed record AzureInfo {
public string BaseUrl { get; init; }
public string TenantId { get; init; }
}
|
Dupe of #43662 |
Description
appsettings.json
record
Startup.cs
Getting exception
Configuration
mcr.microsoft.com/dotnet/sdk:latest
Other information
The extension is located here: https://github.com/dotnet/runtime/blob/0fad9d646359c71f4d5e9443500fd9248ce10aa4/src/libraries/Microsoft.Extensions.Configuration.Binder/src/ConfigurationBinder.cs
Workaround
If I change my record to this it works
The text was updated successfully, but these errors were encountered: