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); } }
public static IImage GetImageForLocalVariable(out string imageName) { imageName = "Icons.16x16.Local"; return(DebuggerResourceService.GetImage(imageName)); }
public static IImage GetImageForArrayIndexer(out string imageName) { imageName = "Icons.16x16.Field"; return(DebuggerResourceService.GetImage(imageName)); }
public static IImage GetImageForParameter(out string imageName) { imageName = "Icons.16x16.Parameter"; return(DebuggerResourceService.GetImage(imageName)); }