Skip to content

Commit 231d5ac

Browse files
committed
- 优化 AOT 默认导致 Enum.GetValues 报错的问题;#1691
1 parent 29e3635 commit 231d5ac

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

FreeSql/Internal/UtilsExpressionTree.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -252,16 +252,21 @@ public static ColumnInfo ColumnAttributeToInfo(TableInfo trytb, object entityDef
252252
if (entityDefault != null) defaultValue = trytb.Properties[csName].GetValue(entityDefault, null);
253253
if (defaultValue != null && mapType.IsEnum)
254254
{
255-
var isEqualsEnumValue = false;
256-
var enumValues = Enum.GetValues(mapType);
257-
for (var a = 0; a < enumValues.Length; a++)
258-
if (object.Equals(defaultValue, enumValues.GetValue(a)))
259-
{
260-
isEqualsEnumValue = true;
261-
break;
262-
}
263-
if (isEqualsEnumValue == false && enumValues.Length > 0)
264-
defaultValue = enumValues.GetValue(0);
255+
Array enumValues = null;
256+
try { enumValues = Enum.GetValues(mapType); } //AOT error
257+
catch { }
258+
if (enumValues != null)
259+
{
260+
var isEqualsEnumValue = false;
261+
for (var a = 0; a < enumValues.Length; a++)
262+
if (object.Equals(defaultValue, enumValues.GetValue(a)))
263+
{
264+
isEqualsEnumValue = true;
265+
break;
266+
}
267+
if (isEqualsEnumValue == false && enumValues.Length > 0)
268+
defaultValue = enumValues.GetValue(0);
269+
}
265270
}
266271
if (defaultValue != null && mapType != colattr.MapType) defaultValue = Utils.GetDataReaderValue(colattr.MapType, defaultValue);
267272
if (defaultValue == null) defaultValue = tp?.defaultValue;

0 commit comments

Comments
 (0)