/// <summary> /// Get reflection data on a target object /// </summary> /// <returns>The all reflected object data on object.</returns> /// <param name="objObject">Object object.</param> public static List <ReflectedObjectData> GetAllReflectedObjectDataOnObject(object objObject) { //cerate list to hold all the preopertys List <ReflectedObjectData> rodReflectedObjectData = new List <ReflectedObjectData>(); //check for nulls if (objObject == null) { return(new List <ReflectedObjectData>()); } //get the type of the object Type typTargetObjectType = objObject.GetType(); //create a list to hold all the type fields List <FieldInfo> fldFieldInfoList = new List <FieldInfo>(); //add the inital field info to the list fldFieldInfoList.AddRange(typTargetObjectType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); //Debug.Log ("Child Type " + typTargetObjectType.ToString()); //loop up through class hirachey while (typTargetObjectType.BaseType != null) { typTargetObjectType = typTargetObjectType.BaseType; //Debug.Log ("BaseType " + typTargetObjectType.ToString()); fldFieldInfoList.AddRange(typTargetObjectType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); //Debug.Log("Fields Fetched"); } //get peropertys and add them to foreach (FieldInfo fldInfo in fldFieldInfoList) { ReflectedObjectData rodData = new ReflectedObjectData(); rodData._objObjectParent = objObject; rodData._fldFieldInfo = fldInfo; //add to property list rodReflectedObjectData.Add(rodData); } //Debug.Log("returning Reflected object list "); //return property list return(rodReflectedObjectData); }
private static void AddObjectIfUniqueReflectionData(ref List <ReflectedObjectData> refReflectionList, ReflectedObjectData rodReflectionData) { //check for nulls if (refReflectionList == null) { refReflectionList = new List <ReflectedObjectData>(); } if (rodReflectionData == null) { return; } //loop through all objects foreach (ReflectedObjectData objListObject in refReflectionList) { //check for duplicates if (objListObject._objObjectParent == rodReflectionData._objObjectParent && objListObject._fldFieldInfo.Name == rodReflectionData._fldFieldInfo.Name) { return; } } //add object to list refReflectionList.Add(rodReflectionData); }