public static T ReflectGet <T>(this UnityEngine.Object target, string fieldName) { FieldInfo field; ReflectDef def = new ReflectDef(target.GetType(), fieldName); if (fieldCache.ContainsKey(def)) { field = fieldCache[def]; } else { field = target.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance); fieldCache[def] = field; } return((T)field.GetValue(target)); }
public static void ReflectSet(this UnityEngine.Object target, string fieldName, object value) { FieldInfo field; ReflectDef def = new ReflectDef(target.GetType(), fieldName); if (fieldCache.ContainsKey(def)) { field = fieldCache[def]; } else { field = target.GetType().GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance); fieldCache[def] = field; } field.SetValue(target, value); }
public static object ReflectInvoke(this UnityEngine.Object target, string methodName, params object[] parameters) { MethodInfo method; ReflectDef def = new ReflectDef(target.GetType(), methodName); if (methodCache.ContainsKey(def)) { method = methodCache[def]; } else { method = target.GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance); methodCache[def] = method; } return(method.Invoke(target, parameters)); }