@@ -27,7 +27,7 @@ public abstract class CacheObjectBase
27
27
public string RichTextName => m_richTextName ?? GetRichTextName ( ) ;
28
28
private string m_richTextName ;
29
29
30
- public bool CanWrite => m_canWrite ?? ( bool ) ( m_canWrite = GetCanWrite ( ) ) ;
30
+ public bool CanWrite => m_canWrite ?? GetCanWrite ( ) ;
31
31
private bool ? m_canWrite ;
32
32
33
33
public virtual void Init ( ) { }
@@ -114,51 +114,45 @@ public object[] ParseArguments()
114
114
type = type . GetElementType ( ) ;
115
115
}
116
116
117
- if ( string . IsNullOrEmpty ( input ) )
117
+ if ( ! string . IsNullOrEmpty ( input ) )
118
118
{
119
- // No input, see if there is a default value.
120
- if ( HasDefaultValue ( m_arguments [ i ] ) )
119
+ if ( type == typeof ( string ) )
121
120
{
122
- parsedArgs . Add ( m_arguments [ i ] . DefaultValue ) ;
121
+ parsedArgs . Add ( input ) ;
123
122
continue ;
124
123
}
124
+ else
125
+ {
126
+ try
127
+ {
128
+ var arg = type . GetMethod ( "Parse" , new Type [ ] { typeof ( string ) } )
129
+ . Invoke ( null , new object [ ] { input } ) ;
125
130
126
- // Try add a null arg I guess
127
- parsedArgs . Add ( null ) ;
128
- continue ;
131
+ parsedArgs . Add ( arg ) ;
132
+ continue ;
133
+ }
134
+ catch
135
+ {
136
+ ExplorerCore . Log ( $ "Argument #{ i } '{ m_arguments [ i ] . Name } ' ({ type . Name } ), could not parse input '{ input } '.") ;
137
+ }
138
+ }
129
139
}
130
140
131
- // strings can obviously just be used directly
132
- if ( type == typeof ( string ) )
141
+ // No input, see if there is a default value.
142
+ if ( HasDefaultValue ( m_arguments [ i ] ) )
133
143
{
134
- parsedArgs . Add ( input ) ;
144
+ parsedArgs . Add ( m_arguments [ i ] . DefaultValue ) ;
135
145
continue ;
136
146
}
137
- else
138
- {
139
- try
140
- {
141
- var arg = type . GetMethod ( "Parse" , new Type [ ] { typeof ( string ) } )
142
- . Invoke ( null , new object [ ] { input } ) ;
143
- parsedArgs . Add ( arg ) ;
144
- continue ;
145
- }
146
- catch
147
- {
148
- ExplorerCore . Log ( $ "Argument #{ i } '{ m_arguments [ i ] . Name } ' ({ type . Name } ), could not parse input '{ input } '.") ;
149
- }
150
- }
147
+
148
+ // Try add a null arg I guess
149
+ parsedArgs . Add ( null ) ;
151
150
}
152
151
153
152
return parsedArgs . ToArray ( ) ;
154
153
}
155
154
156
- public static bool HasDefaultValue ( ParameterInfo arg ) =>
157
- #if NET35
158
- arg . DefaultValue != null ;
159
- #else
160
- arg . HasDefaultValue ;
161
- #endif
155
+ public static bool HasDefaultValue ( ParameterInfo arg ) => arg . DefaultValue != DBNull . Value ;
162
156
163
157
// ========= Gui Draw ==========
164
158
@@ -246,7 +240,7 @@ public void Draw(Rect window, float labelWidth = 215f)
246
240
$ "<color={ UIStyles . Syntax . StructGreen } >{ cm . GenericArgs [ i ] . Name } </color>",
247
241
new GUILayoutOption [ ] { GUILayout . Width ( 15 ) }
248
242
) ;
249
- cm . GenericArgInput [ i ] = GUILayout . TextField ( input , new GUILayoutOption [ ] { GUILayout . Width ( 150 ) } ) ;
243
+ cm . GenericArgInput [ i ] = GUIUnstrip . TextField ( input , new GUILayoutOption [ ] { GUILayout . Width ( 150 ) } ) ;
250
244
GUI . skin . label . alignment = TextAnchor . MiddleLeft ;
251
245
GUILayout . Label ( types , new GUILayoutOption [ 0 ] ) ;
252
246
@@ -274,7 +268,7 @@ public void Draw(Rect window, float labelWidth = 215f)
274
268
275
269
GUI . skin . label . alignment = TextAnchor . MiddleCenter ;
276
270
GUILayout . Label ( i . ToString ( ) , new GUILayoutOption [ ] { GUILayout . Width ( 15 ) } ) ;
277
- m_argumentInput [ i ] = GUILayout . TextField ( input , new GUILayoutOption [ ] { GUILayout . Width ( 150 ) } ) ;
271
+ m_argumentInput [ i ] = GUIUnstrip . TextField ( input , new GUILayoutOption [ ] { GUILayout . Width ( 150 ) } ) ;
278
272
GUI . skin . label . alignment = TextAnchor . MiddleLeft ;
279
273
GUILayout . Label ( label , new GUILayoutOption [ 0 ] ) ;
280
274
@@ -350,11 +344,13 @@ public void Draw(Rect window, float labelWidth = 215f)
350
344
private bool GetCanWrite ( )
351
345
{
352
346
if ( MemInfo is FieldInfo fi )
353
- return ! ( fi . IsLiteral && ! fi . IsInitOnly ) ;
347
+ m_canWrite = ! ( fi . IsLiteral && ! fi . IsInitOnly ) ;
354
348
else if ( MemInfo is PropertyInfo pi )
355
- return pi . CanWrite ;
349
+ m_canWrite = pi . CanWrite ;
356
350
else
357
- return false ;
351
+ m_canWrite = false ;
352
+
353
+ return ( bool ) m_canWrite ;
358
354
}
359
355
360
356
private string GetRichTextName ( )
0 commit comments