private void WriteIndexers(Type type, MarkdownWriter writer) { var indexers = type.GetProperties() .Where(p => p.GetIndexParameters().Length > 0) .OrderBy(p => p.GetIndexParameters().Length) .ToArray(); if (indexers.Length == 0) { return; } writer.WriteHeader(3, "Indexers"); for (int i = 0; i < indexers.Length; i++) { var indexDocs = Docs[ID.GetIDString(indexers[i])]; writer.WriteHeader(4, DocUtilities.GetPropertySignature(indexers[i], false, true, false)); PrintObsoleteWarning(indexers[i], writer); Summary(indexDocs, writer); writer.WriteCodeBlock(Lang, DocUtilities.GetPropertySignature(indexers[i], true, true, true)); Remarks(5, indexDocs, writer); } }
private void WriteProperties(Type type, MarkdownWriter writer) { var props = type.GetProperties(MemberSearchFlags) // Show protected members if class is not sealed .Where(p => type.IsSealed ? (p.CanRead && p.GetMethod.IsPublic) || (p.CanWrite && p.SetMethod.IsPublic) : (p.CanRead && !p.GetMethod.IsPrivate) || (p.CanWrite && !p.SetMethod.IsPrivate)) // Indexers are technically properties, but we want to handle them separately .Where(p => p.GetIndexParameters().Length == 0) // Sort alphabetically .OrderBy(p => p.Name) .ToArray(); if (props.Length == 0) { return; } writer.WriteHeader(3, "Properties"); for (int i = 0; i < props.Length; i++) { var propDocs = Docs[ID.GetIDString(props[i])]; writer.WriteHeader(4, DocUtilities.GetPropertySignature(props[i], false, false, false)); PrintObsoleteWarning(props[i], writer); Summary(propDocs, writer); writer.WriteCodeBlock(Lang, DocUtilities.GetPropertySignature(props[i], true, true, true)); Remarks(5, propDocs, writer); } }