private void WriteTypeHierarchy(XmlWriter writer, TypeHierarchy derivedTypes, Type type) { writer.WriteStartElement("hierarchyType"); writer.WriteAttributeString("id", MemberID.GetMemberID(type)); writer.WriteAttributeString("displayName", MemberDisplayName.GetMemberDisplayName(type)); writer.WriteAttributeString("namespace", type.Namespace); ArrayList interfaces = baseInterfaces.GetDerivedTypes(type); if (interfaces.Count > 0) { writer.WriteStartElement("hierarchyInterfaces"); foreach (Type baseInterfaceType in interfaces) { writer.WriteStartElement("hierarchyInterface"); writer.WriteAttributeString("id", MemberID.GetMemberID(baseInterfaceType)); writer.WriteAttributeString("displayName", MemberDisplayName.GetMemberDisplayName(baseInterfaceType)); writer.WriteAttributeString("namespace", baseInterfaceType.Namespace); writer.WriteAttributeString("fullName", baseInterfaceType.FullName); writer.WriteEndElement(); } writer.WriteEndElement(); } ArrayList childTypesList = derivedTypes.GetDerivedTypes(type); foreach (Type childType in childTypesList) { WriteTypeHierarchy(writer, derivedTypes, childType); } writer.WriteEndElement(); }