Explorar el Código

AOT: fix enum usage (#1760)

神麤詭末 hace 1 año
padre
commit
da39b1de3c
Se han modificado 2 ficheros con 5 adiciones y 2 borrados
  1. 1 1
      Jint/Native/JsNumber.cs
  2. 4 1
      Jint/Runtime/Interop/TypeReference.cs

+ 1 - 1
Jint/Native/JsNumber.cs

@@ -88,7 +88,7 @@ public sealed class JsNumber : JsValue, IEquatable<JsNumber>
 
     internal static JsNumber Create(object value)
     {
-        var underlyingType = System.Type.GetTypeCode(Enum.GetUnderlyingType(value.GetType()));
+        var underlyingType = System.Type.GetTypeCode(value.GetType());
         return underlyingType switch
         {
             TypeCode.Int64 => Create(Convert.ToInt64(value, CultureInfo.InvariantCulture)),

+ 4 - 1
Jint/Runtime/Interop/TypeReference.cs

@@ -298,8 +298,11 @@ namespace Jint.Runtime.Interop
             {
                 var memberNameComparer = typeResolver.MemberNameComparer;
                 var typeResolverMemberNameCreator = typeResolver.MemberNameCreator;
-
+#if NET7_0_OR_GREATER
+                var enumValues = type.GetEnumValuesAsUnderlyingType();
+#else
                 var enumValues = Enum.GetValues(type);
+#endif
                 var enumNames = Enum.GetNames(type);
 
                 for (var i = 0; i < enumValues.Length; i++)