public DataRecordMemberNode(ObjectNode parent, Type[] types, IDataRecord r, int maxDepth, DataContextDriver dcDriver) : base(parent, r, maxDepth, dcDriver)
 {
     if (base.IsAtNestingLimit())
     {
         base.GraphTruncated = true;
     }
     else
     {
         for (int i = 0; i < r.FieldCount; i++)
         {
             object item = r.GetValue(i);
             Type   type = null;
             if (types != null)
             {
                 type = types[i];
             }
             else if (item != null)
             {
                 type = item.GetType();
             }
             if (!(item is IDataRecord))
             {
             }
             base.Members.Add(new MemberData(r.GetName(i), type, ObjectNode.Create(this, item, maxDepth, base.DCDriver)));
         }
         if ((base.Members.Count > 50) && (base.NestingDepth > 1))
         {
             base.InitiallyHidden = true;
         }
     }
 }
Exemple #2
0
        public DynamicObjectMemberNode(ObjectNode parent, DynamicObject item, int maxDepth, DataContextDriver dcDriver) : base(parent, item, maxDepth, dcDriver)
        {
            base.Name    = "DynamicObject";
            base.Summary = item.ToString();
            if (base.Summary.Length > 150)
            {
                base.Summary = base.Summary.Substring(0, 150) + "...";
            }
            IEnumerable <string> dynamicMemberNames = item.GetDynamicMemberNames();

            if (dynamicMemberNames.Any <string>() && (base.CyclicReference == null))
            {
                if (!(!base.IsAtNestingLimit() || (base.Parent is ListNode)))
                {
                    base.GraphTruncated = true;
                }
                else
                {
                    foreach (string str in dynamicMemberNames)
                    {
                        object propValue = this.GetPropValue(item, str);
                        base.Members.Add(new MemberData(str, null, ObjectNode.Create(this, propValue, false, maxDepth, dcDriver)));
                    }
                }
            }
        }
 public CustomMemberProviderNode(ObjectNode parent, object item, int maxDepth, DataContextDriver dcDriver, bool useDataContextDriver) : base(parent, item, maxDepth, dcDriver)
 {
     base.Name = item.GetType().FormatTypeName();
     if (base.IsAtNestingLimit())
     {
         base.GraphTruncated = true;
     }
     else
     {
         IEnumerable <string> names;
         IEnumerable <Type>   types;
         IEnumerable <object> values;
         if (useDataContextDriver)
         {
             ICustomMemberProvider customDisplayMemberProvider = dcDriver.GetCustomDisplayMemberProvider(item);
             names  = customDisplayMemberProvider.GetNames();
             types  = customDisplayMemberProvider.GetTypes();
             values = customDisplayMemberProvider.GetValues();
         }
         else
         {
             Type       type2  = item.GetType().GetInterfaces().First <Type>(t => t.FullName == typeof(ICustomMemberProvider).FullName);
             MethodInfo method = type2.GetMethod("GetNames");
             MethodInfo info2  = type2.GetMethod("GetTypes");
             MethodInfo info3  = type2.GetMethod("GetValues");
             names  = (IEnumerable <string>)method.Invoke(item, null);
             types  = (IEnumerable <Type>)info2.Invoke(item, null);
             values = (IEnumerable <object>)info3.Invoke(item, null);
         }
         IEnumerator <Type> enumerator = types.GetEnumerator();
         enumerator.MoveNext();
         IEnumerator <object> enumerator2 = values.GetEnumerator();
         enumerator2.MoveNext();
         foreach (string str in names)
         {
             object current;
             try
             {
                 current = enumerator2.Current;
             }
             catch (Exception innerException)
             {
                 if ((innerException is TargetInvocationException) && (innerException.InnerException != null))
                 {
                     innerException = innerException.InnerException;
                 }
                 current = innerException;
             }
             base.Members.Add(new MemberData(str, enumerator.Current, ObjectNode.Create(this, current, maxDepth, dcDriver)));
             enumerator.MoveNext();
             enumerator2.MoveNext();
         }
         if ((base.Members.Count > 50) && (base.NestingDepth > 1))
         {
             base.InitiallyHidden = true;
         }
     }
 }
        public ClrMemberNode(ObjectNode parent, object item, int maxDepth, DataContextDriver dcDriver) : base(parent, item, maxDepth, dcDriver)
        {
            base.Name = item.GetType().FormatTypeName();
            Type type = item.GetType();

            if (!((base.CyclicReference != null) || base.IsAtNestingLimit()))
            {
                base.InitiallyHidden = ((((item is MemberInfo) || (item is RuntimeMethodHandle)) || ((item is CultureInfo) || (item is ProcessModule))) || (((item is Uri) || (item is Version)) || ((type.Namespace == "Microsoft.SqlServer.Types") || (type.FullName == "System.Data.EntityKey")))) || ((type.Namespace != null) && (type.Namespace.StartsWith("System.Reflection", StringComparison.Ordinal) || type.Namespace.StartsWith("System.IO", StringComparison.Ordinal)));
            }
            if (item is Type)
            {
                base.Name = "typeof(" + ((Type)item).Name + ")";
            }
            if (!base.Name.StartsWith("{", StringComparison.Ordinal))
            {
                if ((item is MethodBase) && (((MethodBase)item).DeclaringType != null))
                {
                    MethodBase base2    = (MethodBase)item;
                    string[]   strArray = new string[] { base2.DeclaringType.FormatTypeName(), ".", base2.Name, " (", string.Join(", ", (from p in base2.GetParameters() select p.ParameterType.FormatTypeName() + " " + p.Name).ToArray <string>()), ")" };
                    base.Summary = string.Concat(strArray);
                }
                else
                {
                    try
                    {
                        base.Summary = item.ToString();
                    }
                    catch
                    {
                    }
                }
            }
            if (base.Summary.Length > 150)
            {
                base.Summary = base.Summary.Substring(0, 150) + "...";
            }
            FieldInfo[]    fields     = type.GetFields(BindingFlags.Public | BindingFlags.Instance);
            PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            if (((fields.Length != 0) || (properties.Length != 0)) && (base.CyclicReference == null))
            {
                if (!((!base.IsAtNestingLimit() || Util.IsMetaGraphNode(item)) || (base.Parent is ListNode)))
                {
                    base.GraphTruncated = true;
                }
                else
                {
                    object        obj2;
                    bool          isAnonType = base.IsAnonType;
                    Func <object> getter     = null;
                    foreach (FieldInfo fi in fields)
                    {
                        if (isAnonType || (((fi.GetCustomAttributes(typeof(AssociationAttribute), true).Length == 0) && !fi.FieldType.FullName.StartsWith("System.Data.Objects.DataClasses.EntityReference")) && !IsUnloadedEntityAssociation(item, fi)))
                        {
                            if (getter == null)
                            {
                                getter = () => fi.GetValue(item);
                            }
                            obj2 = this.GetValue(fi, getter, isAnonType);
                            base.Members.Add(new MemberData(fi.Name, fi.FieldType, ObjectNode.Create(this, obj2, item is Exception, maxDepth, dcDriver)));
                        }
                    }
                    foreach (PropertyInfo pi in properties)
                    {
                        if ((pi.GetIndexParameters().Length == 0) && (isAnonType || ((((pi.GetCustomAttributes(typeof(AssociationAttribute), true).Length == 0) && !pi.PropertyType.FullName.StartsWith("System.Data.Objects.DataClasses.EntityReference")) && ((pi.PropertyType.FullName != "System.Data.EntityKey") && (pi.PropertyType.FullName != "System.Data.EntityState"))) && !IsUnloadedEntityAssociation(item, pi))))
                        {
                            bool exceptionThrown = false;
                            obj2 = this.GetValue(pi, () => this.GetPropValue(pi, item, out exceptionThrown), isAnonType);
                            bool flag2 = exceptionThrown && ((item is Exception) || ((parent != null) && (parent.ObjectValue is Exception)));
                            base.Members.Add(new MemberData(pi.Name, pi.PropertyType, ObjectNode.Create(this, obj2, item is Exception, flag2 ? 1 : maxDepth, dcDriver)));
                        }
                    }
                    if ((base.Members.Count > 50) && (base.NestingDepth > 1))
                    {
                        base.InitiallyHidden = true;
                    }
                }
            }
        }
Exemple #5
0
 public DataRowNode(ObjectNode parent, DataRow item, int maxDepth, DataContextDriver dcDriver) : base(parent, item, maxDepth, dcDriver)
 {
     base.Name = "DataRow";
     if (base.IsAtNestingLimit())
     {
         base.GraphTruncated = true;
     }
     else
     {
         foreach (DataColumn column in item.Table.Columns)
         {
             object obj2 = item[column];
             base.Members.Add(new MemberData(column.ColumnName, column.DataType, ObjectNode.Create(this, obj2, maxDepth, dcDriver)));
         }
         if ((base.Members.Count > 50) && (base.NestingDepth > 1))
         {
             base.InitiallyHidden = true;
         }
     }
 }
Exemple #6
0
        public ListNode(ObjectNode parent, IEnumerable list, int maxDepth, DataContextDriver dcDriver, string name) : base(parent, list, maxDepth, dcDriver)
        {
            this.Items  = new List <ObjectNode>();
            this.Totals = new Dictionary <string, decimal>();
            this.Counts = new Dictionary <string, decimal>();
            if (name == null)
            {
                this.Name = list.GetType().FormatTypeName();
            }
            else
            {
                this.Name = name;
            }
            this.ElementType = (from itype in list.GetType().GetInterfaces()
                                where itype.IsGenericType && (itype.GetGenericTypeDefinition() == typeof(IEnumerable <>))
                                select itype.GetGenericArguments().First <Type>()).OrderByDescending <Type, Type>(itype => itype, new SubTypeComparer()).FirstOrDefault <Type>();
            if (base.CyclicReference == null)
            {
                if (base.IsAtNestingLimit() || ((parent != null) && ((parent.ObjectValue is Type) || (parent.ObjectValue is Assembly))))
                {
                    base.GraphTruncated = true;
                }
                else
                {
                    IEnumerator enumerator = list.GetEnumerator();
                    try
                    {
                        int?       nullable;
                        ObjectNode node;
                        MemberNode node2;
                        if (!((enumerator != null) && enumerator.MoveNext()))
                        {
                            return;
                        }
                        Type type = (from t in list.GetType().GetInterfaces()
                                     where t.IsGenericType && (t.GetGenericTypeDefinition() == typeof(IGrouping <,>))
                                     select t).FirstOrDefault <Type>();
                        if (type != null)
                        {
                            PropertyInfo property = type.GetProperty("Key");
                            if (property != null)
                            {
                                this.GroupKey     = ObjectNode.Create(this, property.GetValue(list, null), maxDepth, dcDriver);
                                this.GroupKeyText = "Key";
                            }
                        }
                        int num = 0x3e8;
                        if (((UserOptions.Instance != null) && UserOptions.Instance.MaxQueryRows.HasValue) && (((nullable = UserOptions.Instance.MaxQueryRows).GetValueOrDefault() > 0x3e8) && nullable.HasValue))
                        {
                            num = UserOptions.Instance.MaxQueryRows.Value;
                        }
                        int num2 = 0;
                        goto Label_033B;
Label_0215:
                        this.Items.Add(node);
                        if (++num2 == num)
                        {
                            goto Label_0364;
                        }
                        if (enumerator.MoveNext())
                        {
                            goto Label_033B;
                        }
                        return;

Label_0244:
                        foreach (MemberData data in node2.Members)
                        {
                            if (((data.Type.IsNumeric() && !ObjectNode.IsKey(data.Name, data.Type)) && (data.Value != null)) && (data.Value.ObjectValue != null))
                            {
                                decimal num3;
                                decimal num4;
                                decimal num5;
                                this.Totals.TryGetValue(data.Name, out num3);
                                this.Counts.TryGetValue(data.Name, out num4);
                                if (decimal.TryParse(data.Value.ObjectValue.ToString(), out num5))
                                {
                                    this.Totals[data.Name] = num3 + num5;
                                    this.Counts[data.Name] = decimal.op_Increment(num4);
                                }
                            }
                        }
                        goto Label_0215;
Label_033B:
                        node  = ObjectNode.Create(this, enumerator.Current, maxDepth, dcDriver);
                        node2 = node as MemberNode;
                        if (node2 == null)
                        {
                            goto Label_0215;
                        }
                        goto Label_0244;
Label_0364:
                        this.ItemsTruncated = true;
                    }
                    finally
                    {
                        IDisposable disposable = enumerator as IDisposable;
                        if (disposable != null)
                        {
                            try
                            {
                                disposable.Dispose();
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }
        }