Example #1
0
        public static IImage GetImageForMember(IDebugMemberInfo memberInfo, out string imageName)
        {
            string name = string.Empty;

            if (memberInfo.IsPublic)
            {
            }
            else if (memberInfo.IsAssembly)
            {
                name += "Internal";
            }
            else if (memberInfo.IsFamily)
            {
                name += "Protected";
            }
            else if (memberInfo.IsPrivate)
            {
                name += "Private";
            }
            if (memberInfo is FieldInfo)
            {
                name += "Field";
            }
            else if (memberInfo is PropertyInfo)
            {
                name += "Property";
            }
            else if (memberInfo is MethodInfo)
            {
                name += "Method";
            }
            else
            {
                throw new DebuggerException("Unknown member type " + memberInfo.GetType().FullName);
            }

            imageName = "Icons.16x16." + name;
            return(DebuggerResourceService.GetImage(imageName));
        }
        public static IEnumerable <TreeNode> LazyGetChildNodesOfObject(TreeNode current, Expression targetObject, DebugType shownType)
        {
            MemberInfo[] publicStatic      = shownType.GetFieldsAndNonIndexedProperties(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
            MemberInfo[] publicInstance    = shownType.GetFieldsAndNonIndexedProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            MemberInfo[] nonPublicStatic   = shownType.GetFieldsAndNonIndexedProperties(BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly);
            MemberInfo[] nonPublicInstance = shownType.GetFieldsAndNonIndexedProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);

            DebugType baseType = (DebugType)shownType.BaseType;

            if (baseType != null)
            {
                yield return(new TreeNode(
                                 DebuggerResourceService.GetImage("Icons.16x16.Class"),
                                 StringParser.Parse("${res:MainWindow.Windows.Debug.LocalVariables.BaseClass}"),
                                 baseType.Name,
                                 baseType.FullName,
                                 current,
                                 newNode => baseType.FullName == "System.Object" ? null : Utils.LazyGetChildNodesOfObject(newNode, targetObject, baseType)
                                 ));
            }

            if (nonPublicInstance.Length > 0)
            {
                yield return(new TreeNode(
                                 null,
                                 StringParser.Parse("${res:MainWindow.Windows.Debug.LocalVariables.NonPublicMembers}"),
                                 string.Empty,
                                 string.Empty,
                                 current,
                                 newNode => Utils.LazyGetMembersOfObject(newNode, targetObject, nonPublicInstance)
                                 ));
            }

            if (publicStatic.Length > 0 || nonPublicStatic.Length > 0)
            {
                yield return(new TreeNode(
                                 null,
                                 StringParser.Parse("${res:MainWindow.Windows.Debug.LocalVariables.StaticMembers}"),
                                 string.Empty,
                                 string.Empty,
                                 current,
                                 p => {
                    var children = Utils.LazyGetMembersOfObject(p, targetObject, publicStatic);
                    if (nonPublicStatic.Length > 0)
                    {
                        TreeNode nonPublicStaticNode = new TreeNode(
                            null,
                            StringParser.Parse("${res:MainWindow.Windows.Debug.LocalVariables.NonPublicStaticMembers}"),
                            string.Empty,
                            string.Empty,
                            p,
                            newNode => Utils.LazyGetMembersOfObject(newNode, targetObject, nonPublicStatic)
                            );
                        children = Utils.PrependNode(nonPublicStaticNode, children);
                    }
                    return children;
                }
                                 ));
            }

            DebugType iListType = (DebugType)shownType.GetInterface(typeof(IList).FullName);

            if (iListType != null)
            {
                yield return(new IListNode(current, targetObject));
            }
            else
            {
                DebugType iEnumerableType, itemType;
                if (shownType.ResolveIEnumerableImplementation(out iEnumerableType, out itemType))
                {
                    yield return(new IEnumerableNode(current, targetObject, itemType));
                }
            }

            foreach (TreeNode node in LazyGetMembersOfObject(current, targetObject, publicInstance))
            {
                yield return(node);
            }
        }
Example #3
0
 public static IImage GetImageForLocalVariable(out string imageName)
 {
     imageName = "Icons.16x16.Local";
     return(DebuggerResourceService.GetImage(imageName));
 }
Example #4
0
 public static IImage GetImageForArrayIndexer(out string imageName)
 {
     imageName = "Icons.16x16.Field";
     return(DebuggerResourceService.GetImage(imageName));
 }
Example #5
0
 public static IImage GetImageForParameter(out string imageName)
 {
     imageName = "Icons.16x16.Parameter";
     return(DebuggerResourceService.GetImage(imageName));
 }