Exemplo n.º 1
0
    /// <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);
    }
Exemplo n.º 2
0
    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);
    }