private void WriteMethods(Type type, MarkdownWriter writer) { var methods = type.GetMethods(MemberSearchFlags) // Exclude compiler-generated and internal methods .Where(m => !m.IsSpecialName && !m.IsAssembly) // Exclude protected methods when class is sealed .Where(m => type.IsSealed ? m.IsPublic : !m.IsPrivate) // Sort alphabetically... .OrderBy(m => m.Name) // ... then by parameter count. .ThenBy(m => m.GetParameters().Length) .ToArray(); if (methods.Length > 0) { writer.WriteHeader(3, "Methods"); foreach (var method in methods) { var methodDocs = Docs[ID.GetIDString(method)]; // Heading writer.WriteHeader(4, DocUtilities.GetMethodSignature(method, false, false), true); PrintObsoleteWarning(method, writer); Summary(methodDocs, writer); writer.WriteCodeBlock(Lang, DocUtilities.GetMethodSignature(method, true, true)); // Parameters WriteParamList(4, method, writer, methodDocs); Returns(4, methodDocs, writer); Remarks(4, methodDocs, writer); } } }
private void WriteConstructors(Type type, MarkdownWriter writer) { // Constructor list var ctors = type.GetConstructors(); if (ctors.Length > 0) { writer.WriteHeader(3, "Constructors"); for (int i = 0; i < ctors.Length; i++) { // Heading for constructor section var ctorDocs = Docs[ID.GetIDString(ctors[i])]; writer.WriteHeader(4, DocUtilities.GetMethodSignature(ctors[i], false, false)); PrintObsoleteWarning(ctors[i], writer); Summary(ctorDocs, writer); // Signature writer.WriteCodeBlock(Lang, DocUtilities.GetMethodSignature(ctors[i], true, true)); // Get constructor's parameters and associated docs WriteParamList(5, ctors[i], writer, ctorDocs); Remarks(5, ctorDocs, writer); } } }