1
1
using Facebook . CSSLayout ;
2
+ using ReactNative . Reflection ;
2
3
using System ;
3
4
using System . Collections . Concurrent ;
4
5
using System . Collections . Generic ;
5
- using System . Globalization ;
6
- using System . Linq ;
7
6
8
7
namespace ReactNative . UIManager
9
8
{
@@ -97,7 +96,7 @@ public void SetFlex(float flex)
97
96
public void SetFlexDirection ( string flexDirection )
98
97
{
99
98
FlexDirection = flexDirection != null
100
- ? Parse < CSSFlexDirection > ( flexDirection , nameof ( flexDirection ) )
99
+ ? EnumHelpers . Parse < CSSFlexDirection > ( flexDirection )
101
100
: CSSFlexDirection . Column ;
102
101
}
103
102
@@ -109,7 +108,7 @@ public void SetFlexDirection(string flexDirection)
109
108
public void SetFlexWrap ( string flexWrap )
110
109
{
111
110
Wrap = flexWrap != null
112
- ? Parse < CSSWrap > ( flexWrap , nameof ( flexWrap ) )
111
+ ? EnumHelpers . Parse < CSSWrap > ( flexWrap )
113
112
: CSSWrap . NoWrap ;
114
113
}
115
114
@@ -121,7 +120,7 @@ public void SetFlexWrap(string flexWrap)
121
120
public void SetAlignSelf ( string alignSelf )
122
121
{
123
122
AlignSelf = alignSelf != null
124
- ? Parse < CSSAlign > ( alignSelf , nameof ( alignSelf ) )
123
+ ? EnumHelpers . Parse < CSSAlign > ( alignSelf )
125
124
: CSSAlign . Auto ;
126
125
}
127
126
@@ -133,7 +132,7 @@ public void SetAlignSelf(string alignSelf)
133
132
public void SetAlignItems ( string alignItems )
134
133
{
135
134
AlignItems = alignItems != null
136
- ? Parse < CSSAlign > ( alignItems , nameof ( alignItems ) )
135
+ ? EnumHelpers . Parse < CSSAlign > ( alignItems )
137
136
: CSSAlign . Stretch ;
138
137
}
139
138
@@ -145,7 +144,7 @@ public void SetAlignItems(string alignItems)
145
144
public void SetJustifyContent ( string justifyContent )
146
145
{
147
146
JustifyContent = justifyContent != null
148
- ? Parse < CSSJustify > ( justifyContent , nameof ( justifyContent ) )
147
+ ? EnumHelpers . Parse < CSSJustify > ( justifyContent )
149
148
: CSSJustify . FlexStart ;
150
149
}
151
150
@@ -212,33 +211,8 @@ public void SetBorderWidth(int index, float borderWidth)
212
211
public void SetPosition ( string position )
213
212
{
214
213
PositionType = position != null
215
- ? Parse < CSSPositionType > ( position , nameof ( position ) )
214
+ ? EnumHelpers . Parse < CSSPositionType > ( position )
216
215
: CSSPositionType . Relative ;
217
216
}
218
-
219
- private static T Parse < T > ( string value , string paramName )
220
- {
221
- var lookup = s_enumCache . GetOrAdd (
222
- typeof ( T ) ,
223
- type => Enum . GetValues ( type )
224
- . Cast < object > ( )
225
- . ToDictionary (
226
- e => e . ToString ( ) . ToLowerInvariant ( ) ,
227
- e => e ) ) ;
228
-
229
- var result = default ( object ) ;
230
- if ( ! lookup . TryGetValue ( value . ToLowerInvariant ( ) . Replace ( "-" , "" ) , out result ) )
231
- {
232
- throw new ArgumentOutOfRangeException (
233
- paramName ,
234
- string . Format (
235
- CultureInfo . InvariantCulture ,
236
- "Invalid value '{0}' for type '{1}'." ,
237
- value ,
238
- typeof ( T ) ) ) ;
239
- }
240
-
241
- return ( T ) result ;
242
- }
243
217
}
244
218
}
0 commit comments