public FieldInfo GetField(String name, int lexLevel){
if (lexLevel <= 0)
return null;
IReflect ir;
if (this.contained_object is IReflect)
ir = (IReflect)(this.contained_object);
else
ir = (IReflect)(Globals.TypeRefs.ToReferenceContext(this.contained_object.GetType()));
FieldInfo field = ir.GetField(name, BindingFlags.Instance|BindingFlags.Static|BindingFlags.FlattenHierarchy|BindingFlags.Public);
if (field != null)
return new JSWrappedField(field, this.contained_object);
PropertyInfo prop = ir.GetProperty(name, BindingFlags.Instance|BindingFlags.Static|BindingFlags.Public);
if (prop != null)
return new JSPropertyField(prop, this.contained_object);
if (this.parent != null && lexLevel > 1){
field = ((IActivationObject)this.parent).GetField(name, lexLevel-1);
if (field != null)
return new JSWrappedField(field, this.parent);
}
return null;
}