DocumentBuilderMember[] IAssemblyView.GetTypeMembers(Type type) { List <DocumentBuilderMember> mems = new List <DocumentBuilderMember>(); AssemblyView_AssemblyOnly_TreeNode asmNode = null; foreach (AssemblyView_AssemblyOnly_TreeNode node in Nodes) { if (node.Assembly == type.Assembly) { asmNode = node; break; } } TreeNode asmSubNode = type.IsPublic ? asmNode.Nodes[Resources.strPublicType] : asmNode.Nodes[Resources.strNonPublicType]; MemberTree tree = GetAllMembers(type); foreach (TreeNode classNode in asmSubNode.Nodes) { foreach (TreeNode cate1Node in classNode.Nodes) { foreach (TreeNode cate2Node in cate1Node.Nodes) { foreach (MemberInfo member in tree.GetMembers(cate1Node.Name, cate2Node.Name)) { mems.Add(new DocumentBuilderMember(cate1Node.Checked, member)); } } } } return(mems.ToArray()); }
MemberInfo[] IAssemblyView.GetTypeSelectedMembers(Type type) { List <MemberInfo> mems = new List <MemberInfo>(); AssemblyView_AssemblyOnly_TreeNode asmNode = null; foreach (AssemblyView_AssemblyOnly_TreeNode node in Nodes) { if (node.Assembly == type.Assembly) { asmNode = node; break; } } TreeNode asmSubNode = type.IsPublic ? asmNode.Nodes[Resources.strPublicType] : asmNode.Nodes[Resources.strNonPublicType]; MemberTree tree = GetAllMembers(type); foreach (TreeNode classNode in asmSubNode.Nodes) { foreach (TreeNode cate1Node in classNode.Nodes) { foreach (TreeNode cate2Node in cate1Node.Nodes) { if (cate2Node.Checked) { mems.AddRange(tree.GetMembers(cate1Node.Name, cate2Node.Name)); } } } } return(mems.ToArray()); }
public static MemberTree GetAllMembers(Type type) { MemberTree tree = new MemberTree(); foreach (MemberInfo member in type.GetMembers(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)) { string cate1 = null; if (member.DeclaringType == type) { cate1 = Resources.strMember; } else { cate1 = Resources.strInheritMember; } #region 添加成员到列表中 switch (member.MemberType) { case MemberTypes.Constructor: { ConstructorInfo ctor = member as ConstructorInfo; if (ctor.IsPublic) { tree.Add(cate1, Resources.strPublicMethod, member); } else if (ctor.IsPrivate) { tree.Add(cate1, Resources.strPrivateMethod, member); } else { tree.Add(cate1, Resources.strProtectedMethod, member); } break; } case MemberTypes.Method: { MethodInfo method = member as MethodInfo; if (!method.IsSpecialName) { if (method.IsPublic) { tree.Add(cate1, Resources.strPublicMethod, member); } else if (method.IsPrivate) { tree.Add(cate1, Resources.strPrivateMethod, member); } else { tree.Add(cate1, Resources.strProtectedMethod, member); } } break; } case MemberTypes.Property: { PropertyInfo property = member as PropertyInfo; MethodAttributes attr = 0; MethodInfo getMethod, setMethod; getMethod = property.GetGetMethod(true); setMethod = property.GetSetMethod(true); if (getMethod != null) { attr = getMethod.Attributes; } else if (setMethod != null) { attr = setMethod.Attributes; } else { attr = 0; } if (attr != 0) { if ((attr & MethodAttributes.Public) == MethodAttributes.Public) { tree.Add(cate1, Resources.strPublicProperty, member); } else if ((attr & MethodAttributes.Private) == MethodAttributes.Private) { tree.Add(cate1, Resources.strPrivateProperty, member); } else { tree.Add(cate1, Resources.strProtectedProperty, member); } } break; } case MemberTypes.Field: { FieldInfo field = member as FieldInfo; if (field.IsPublic) { tree.Add(cate1, Resources.strPublicField, member); } else if (field.IsPrivate) { tree.Add(cate1, Resources.strPrivateField, member); } else { tree.Add(cate1, Resources.strProtectedField, member); } break; } case MemberTypes.Event: { tree.Add(cate1, Resources.strEvent, member); break; } } #endregion } return(tree); }