Handle nullable enum default values (dotnet/extensions#531)
\n\nCommit migrated from 33f839d585
This commit is contained in:
parent
4541e05c57
commit
ebb1165b14
|
|
@ -8,6 +8,8 @@ namespace Microsoft.Extensions.Internal
|
|||
{
|
||||
internal class ParameterDefaultValue
|
||||
{
|
||||
private static readonly Type _nullable = typeof(Nullable<>);
|
||||
|
||||
public static bool TryGetDefaultValue(ParameterInfo parameter, out object defaultValue)
|
||||
{
|
||||
bool hasDefaultValue;
|
||||
|
|
@ -39,6 +41,19 @@ namespace Microsoft.Extensions.Internal
|
|||
{
|
||||
defaultValue = Activator.CreateInstance(parameter.ParameterType);
|
||||
}
|
||||
|
||||
// Handle nullable enums
|
||||
if (defaultValue != null &&
|
||||
parameter.ParameterType.IsGenericType &&
|
||||
parameter.ParameterType.GetGenericTypeDefinition() == _nullable
|
||||
)
|
||||
{
|
||||
var underlyingType = Nullable.GetUnderlyingType(parameter.ParameterType);
|
||||
if (underlyingType != null && underlyingType.IsEnum)
|
||||
{
|
||||
defaultValue = Enum.ToObject(underlyingType, defaultValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return hasDefaultValue;
|
||||
|
|
|
|||
Loading…
Reference in New Issue