@@ -14,16 +14,16 @@ public class EnumMetaData
1414
1515 public int UnderlyingTypeSize { get ; private set ; } = sizeof ( int ) ;
1616
17- public IReadOnlyList < long > Values { get ; private set ; }
17+ public IReadOnlyList < KeyValuePair < long , string > > Values { get ; private set ; }
1818
19- public IReadOnlyList < string > Names { get ; private set ; }
20-
21- public void SetData ( bool useFlagsMode , int underlyingTypeSize , IDictionary < long , string > values )
19+ public void SetData ( bool useFlagsMode , int underlyingTypeSize , IEnumerable < KeyValuePair < long , string > > values )
2220 {
2321 if ( ! ( underlyingTypeSize == 1 || underlyingTypeSize == 2 || underlyingTypeSize == 4 || underlyingTypeSize == 8 ) )
2422 {
2523 throw new ArgumentOutOfRangeException ( nameof ( underlyingTypeSize ) ) ;
2624 }
25+
26+ var temp = values . OrderBy ( t => t . Key ) . ToList ( ) ;
2727
2828 if ( useFlagsMode )
2929 {
@@ -41,7 +41,7 @@ public void SetData(bool useFlagsMode, int underlyingTypeSize, IDictionary<long,
4141 break ;
4242 }
4343
44- if ( values . Keys . Select ( v => ( ulong ) v ) . Max ( ) > maxPossibleValue )
44+ if ( temp . Select ( kv => ( ulong ) kv . Key ) . Max ( ) > maxPossibleValue )
4545 {
4646 throw new ArgumentOutOfRangeException ( ) ;
4747 }
@@ -66,15 +66,14 @@ public void SetData(bool useFlagsMode, int underlyingTypeSize, IDictionary<long,
6666 break ;
6767 }
6868
69- if ( values . Keys . Max ( ) > maxPossibleValue || values . Keys . Min ( ) < minPossibleValue )
69+ if ( temp . Max ( kv => kv . Key ) > maxPossibleValue || temp . Min ( kv => kv . Key ) < minPossibleValue )
7070 {
7171 throw new ArgumentOutOfRangeException ( ) ;
7272 }
7373 }
7474
7575 UseFlagsMode = useFlagsMode ;
76- Values = values . Keys . ToList ( ) ;
77- Names = values . Values . ToList ( ) ;
76+ Values = temp ;
7877 }
7978 }
8079}
0 commit comments