Ejemplo n.º 1
0
        private static UIDBInclude GetAttribute(FieldInfo fI)
        {
            UIDBInclude attrib = (UIDBInclude)Attribute.GetCustomAttribute(fI, typeof(UIDBInclude));

            return(attrib);
        }
Ejemplo n.º 2
0
        private static UIDBInclude GetAttribute(PropertyInfo pI)
        {
            UIDBInclude attrib = (UIDBInclude)Attribute.GetCustomAttribute(pI, typeof(UIDBInclude));

            return(attrib);
        }
Ejemplo n.º 3
0
 public static void Traverse(object obj, Action <string, object, MemoryBrowser.ElementType, UIDBInclude> callback)
 {
     // process fields
     if (obj is IList)
     {
         // traverse list
         foreach (object val in ((IList)obj))
         {
             bool isManaged = IsManaged(val);
             MemoryBrowser.ElementType elemType = MemoryBrowser.GetElementType(val);
             callback(val.GetType().Name, val, elemType, null);
             //if (!isManaged) {
             //    // not managed ==> all elements are part of the table
             //    callback(obj.GetType().Name, val, elemType, null);
             //} else {
             //    var attrib = GetAttribute(val);
             //    if (attrib != null) {
             //        callback(field.Name, val, elemType, attrib);
             //    }
             //}
         }
     }
     else
     {
         bool isManaged = IsManaged(obj);
         // traverse object
         foreach (FieldInfo field in obj.GetType().GetFields())
         {
             object val = field.GetValue(obj);
             MemoryBrowser.ElementType elemType = MemoryBrowser.GetElementType(val);
             if (!isManaged)
             {
                 // not managed ==> all elements are part of the table
                 callback(field.Name, val, elemType, null);
             }
             else
             {
                 UIDBInclude attrib = GetAttribute(field);
                 if (attrib != null)
                 {
                     callback(field.Name, val, elemType, attrib);
                 }
             }
         }
         // process properties
         foreach (PropertyInfo prop in obj.GetType().GetProperties())
         {
             object val = prop.GetValue(obj);
             MemoryBrowser.ElementType elemType = MemoryBrowser.GetElementType(obj);
             if (!isManaged)
             {
                 // not managed ==> all elements are part of the table
                 callback(prop.Name, val, elemType, null);
             }
             else
             {
                 UIDBInclude attrib = GetAttribute(prop);
                 if (attrib != null)
                 {
                     callback(prop.Name, val, elemType, attrib);
                 }
             }
         }
     }
 }