22{
33 using Hexa . NET . ImGui ;
44 using System ;
5+ using System . Linq ;
56 using System . Diagnostics . CodeAnalysis ;
67
78 /// <summary>
1011 /// <typeparam name="T">The enum type.</typeparam>
1112 public static class ComboEnumHelper < T > where T : struct , Enum
1213 {
14+ #if NET5_0_OR_GREATER
1315 private static readonly T [ ] values = Enum . GetValues < T > ( ) ;
1416 private static readonly string [ ] names = Enum . GetNames < T > ( ) ;
17+ #else
18+ private static readonly T [ ] values = ( T [ ] ) Enum . GetValues ( typeof ( T ) ) ;
19+ private static readonly string [ ] names = Enum . GetNames ( typeof ( T ) ) ;
20+ #endif
1521
1622 /// <summary>
1723 /// Displays a combo box to select an enum value.
@@ -54,9 +60,15 @@ public static class ComboEnumHelper
5460 {
5561 private static readonly Dictionary < Type , object [ ] > values = new ( ) ;
5662 private static readonly Dictionary < Type , string [ ] > names = new ( ) ;
63+ #if NET7_0_OR_GREATER
5764
5865 [ UnconditionalSuppressMessage ( "AOT" , "IL3050:Calling members annotated with 'RequiresDynamicCodeAttribute' may break functionality when AOT compiling." , Justification = "All members are included by [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]." ) ]
59- private static void Get ( [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . All ) ] Type type , out object [ ] values , out string [ ] names )
66+ #endif
67+ private static void Get (
68+ #if NET7_0_OR_GREATER
69+ [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . All ) ]
70+ #endif
71+ Type type , out object [ ] values , out string [ ] names )
6072 {
6173 if ( ComboEnumHelper . values . TryGetValue ( type , out var objects ) )
6274 {
@@ -78,7 +90,11 @@ private static void Get([DynamicallyAccessedMembers(DynamicallyAccessedMemberTyp
7890 /// <param name="type">The enum type to select values from.</param>
7991 /// <param name="value">The currently selected enum value (modified by user interaction).</param>
8092 /// <returns><c>true</c> if the user selects a new value, <c>false</c> otherwise.</returns>
81- public static bool Combo ( string label , [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . All ) ] Type type , ref object value )
93+ public static bool Combo ( string label ,
94+ #if NET7_0_OR_GREATER
95+ [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . All ) ]
96+ #endif
97+ Type type , ref object value )
8298 {
8399 Get ( type , out var values , out var names ) ;
84100 int index = Array . IndexOf ( values , value ) ;
@@ -95,7 +111,11 @@ public static bool Combo(string label, [DynamicallyAccessedMembers(DynamicallyAc
95111 /// </summary>
96112 /// <param name="type">The enum type to select values from.</param>
97113 /// <param name="value">The enum value to display.</param>
98- public static void Text ( [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . All ) ] Type type , object value )
114+ public static void Text (
115+ #if NET7_0_OR_GREATER
116+ [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . All ) ]
117+ #endif
118+ Type type , object value )
99119 {
100120 Get ( type , out var values , out var names ) ;
101121 int index = Array . IndexOf ( values , value ) ;
0 commit comments