File tree Expand file tree Collapse file tree 2 files changed +22
-3
lines changed
Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending
Volo.Abp.Core/Volo/Abp/Reflection Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -242,7 +242,7 @@ protected virtual void FillEnums(ObjectExtensionsDto objectExtensionsDto)
242242 e => e . GetProperties ( )
243243 )
244244 )
245- . Where ( p => p . Type . IsEnum )
245+ . Where ( p => p . Type . IsEnum || TypeHelper . IsNullableEnum ( p . Type ) )
246246 . ToList ( ) ;
247247
248248 foreach ( var enumProperty in enumProperties )
@@ -260,12 +260,23 @@ protected virtual ExtensionEnumDto CreateExtensionEnumDto(ExtensionPropertyConfi
260260 LocalizationResource = enumProperty . GetLocalizationResourceNameOrNull ( )
261261 } ;
262262
263- foreach ( var enumValue in enumProperty . Type . GetEnumValues ( ) )
263+ var enumType = enumProperty . Type . IsEnum
264+ ? enumProperty . Type
265+ : TypeHelper . IsNullableEnum ( enumProperty . Type )
266+ ? Nullable . GetUnderlyingType ( enumProperty . Type )
267+ : null ;
268+
269+ if ( enumType == null )
270+ {
271+ return extensionEnumDto ;
272+ }
273+
274+ foreach ( var enumValue in enumType . GetEnumValues ( ) )
264275 {
265276 extensionEnumDto . Fields . Add (
266277 new ExtensionEnumFieldDto
267278 {
268- Name = enumProperty . Type . GetEnumName ( enumValue ) ! ,
279+ Name = enumType . GetEnumName ( enumValue ) ! ,
269280 Value = enumValue
270281 }
271282 ) ;
Original file line number Diff line number Diff line change @@ -84,6 +84,14 @@ public static bool IsNullable(Type type)
8484 return type . IsGenericType && type . GetGenericTypeDefinition ( ) == typeof ( Nullable < > ) ;
8585 }
8686
87+ public static bool IsNullableEnum ( Type type )
88+ {
89+ return type . IsGenericType &&
90+ type . GetGenericTypeDefinition ( ) == typeof ( Nullable < > ) &&
91+ type . GenericTypeArguments . Length == 1 &&
92+ type . GenericTypeArguments [ 0 ] . IsEnum ;
93+ }
94+
8795 public static Type GetFirstGenericArgumentIfNullable ( this Type t )
8896 {
8997 if ( t . GetGenericArguments ( ) . Length > 0 && t . GetGenericTypeDefinition ( ) == typeof ( Nullable < > ) )
You can’t perform that action at this time.
0 commit comments