public override bool TryGetMember(System.Dynamic.GetMemberBinder binder, out object result) { if (data != null) { if (data.ContainsKey(binder.Name)) { result = data[binder.Name]; if (result is Dictionary <string, object> ) { result = new JsonData(result as Dictionary <string, object>); } else if (result is System.Collections.ArrayList) { result = new JsonData(result as System.Collections.ArrayList); } return(true); } else { result = data.GetType().InvokeMember(binder.Name, System.Reflection.BindingFlags.GetProperty, null, data, null); return(true); } } else { result = list.GetType().InvokeMember(binder.Name, System.Reflection.BindingFlags.GetProperty, null, list, null); return(true); } }