|
@@ -26,8 +26,7 @@
|
|
|
}
|
|
|
|
|
|
public static function field( o : Dynamic, field : String ) : Dynamic untyped {
|
|
|
- // sealed classes will throw an exception
|
|
|
- return try o[field] catch( e : Dynamic ) null;
|
|
|
+ return o != null && __in__(field, o) ? o[field] : null;
|
|
|
}
|
|
|
|
|
|
public inline static function setField( o : Dynamic, field : String, value : Dynamic ) : Void untyped {
|
|
@@ -35,19 +34,19 @@
|
|
|
}
|
|
|
|
|
|
public static function getProperty( o : Dynamic, field : String ) : Dynamic untyped {
|
|
|
- try {
|
|
|
- return o["get_" + field]();
|
|
|
- } catch( e : Dynamic ) try {
|
|
|
- return o[field];
|
|
|
- } catch( e : Dynamic ) {
|
|
|
- return null;
|
|
|
+ if(o == null) return null;
|
|
|
+ var getter = 'get_$field';
|
|
|
+ if(__in__(getter, o)) {
|
|
|
+ return o[getter]();
|
|
|
}
|
|
|
+ return __in__(field, o) ? o[field] : null;
|
|
|
}
|
|
|
|
|
|
public static function setProperty( o : Dynamic, field : String, value : Dynamic ) : Void untyped {
|
|
|
- try {
|
|
|
- o["set_" + field](value);
|
|
|
- } catch( e : Dynamic ) {
|
|
|
+ var setter = 'set_$field';
|
|
|
+ if(__in__(setter, o)) {
|
|
|
+ o[setter](value);
|
|
|
+ } else {
|
|
|
o[field] = value;
|
|
|
}
|
|
|
}
|