public void SelectType(Type t) { if (t == null) { return; } var assemblyNode = GetNodes().Where(n => n is AssemblyNode && ((AssemblyNode)n).Assembly == t.Assembly).FirstOrDefault(); if (assemblyNode == null) { return; } assemblyNode.Populate(null); var namespaceNode = assemblyNode.GetNodes().Where(n => n is NamespaceNode && ((NamespaceNode)n).Namespace == t.Namespace).FirstOrDefault(); if (namespaceNode == null) { return; } namespaceNode.Populate(null); AbstractAssemblyNode typeNode = namespaceNode; List <Type> pathToType = GetPathFromNonNestedTypeToType(t); foreach (var pathType in pathToType) { typeNode = typeNode.GetNodes().Where(n => n is TypeNode && ((TypeNode)n).Type.GUID == pathType.GUID).FirstOrDefault(); if (typeNode == null) { return; } typeNode.Populate(null); } typeNode.EnsureVisible(); tvNodes.SelectedNode = typeNode; }
public void SelectMember(MemberInfo member, int offset = -1) { Type t = member.DeclaringType; if (t == null) { System.Diagnostics.Debug.Assert(t != null, "Declaring type is null"); } var assemblyNode = GetNodes().Where(n => n is AssemblyNode && ((AssemblyNode)n).Assembly == t.Assembly).FirstOrDefault(); if (assemblyNode == null) { return; } assemblyNode.Populate(null); var namespaceNode = assemblyNode.GetNodes().Where(n => n is NamespaceNode && ((NamespaceNode)n).Namespace == t.Namespace).FirstOrDefault(); if (namespaceNode == null) { return; } namespaceNode.Populate(null); AbstractAssemblyNode typeNode = namespaceNode; List <Type> pathToType = GetPathFromNonNestedTypeToType(t); foreach (var pathType in pathToType) { typeNode = typeNode.GetNodes().Where(n => n is TypeNode && ((TypeNode)n).Type.GUID == pathType.GUID).FirstOrDefault(); if (typeNode == null) { return; } typeNode.Populate(null); } var memberNode = typeNode.GetNodes().Where(n => n is MemberNode && ((MemberNode)n).Member.IsEqual(member)) .FirstOrDefault(); if (memberNode == null) { var propNode = typeNode.GetNodes().Where(n => { if (n is PropertyNode) { var pNode = ((PropertyNode)n); var getMethod = pNode.Property.GetGetMethod(true); if (getMethod != null && member.IsEqual(getMethod)) { return(true); } var setMethod = pNode.Property.GetSetMethod(true); if (setMethod != null && member.IsEqual(setMethod)) { return(true); } } return(false); }).FirstOrDefault(); if (propNode == null) { return; } propNode.Populate(null); memberNode = propNode.GetNodes().Where(n => n is MemberNode && ((MemberNode)n).Member.IsEqual(member)) .FirstOrDefault(); if (memberNode == null) { return; } } memberNode.EnsureVisible(); tvNodes.SelectedNode = memberNode; if (offset != -1) { codePane.ScrollToInstruction(offset); } }