In .NET 6, the ConfigurationBinder.Get<T> method used to return a T. In .NET 7, it's now returning a T?. However, when I look at its source code, I don't see why it needs to be so:
public static T? Get<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>(this IConfiguration configuration, Action<BinderOptions>? configureOptions)
{
ThrowHelper.ThrowIfNull(configuration);
object? result = configuration.Get(typeof(T), configureOptions);
if (result == null)
{
return default(T);
}
return (T)result;
}
Doesn't this function always actually return T?
CodePudding user response:
return default(T); will result in null if T is reference type or nullable value type (as shown in the docs example or you can check it out yourself), so the return type is correct.
