public virtual void WriteParametersSection(int level, DocumentFormatter output, OutputContext context, IEnumerable <ParameterInfo> parameters) { if (parameters == null || !parameters.Any()) { return; } var doc = context.Document.Of(this); output.Header(level, "Parameters"); output.DefinitionList(parameters, parameter => { output.Text(parameter.Name, TextStyles.Teletype); output.Text(": "); if (parameter.ParameterType.IsGenericParameter) { output.Text(parameter.ParameterType.GetDisplayName(), TextStyles.Emphasize); } else { output.LinkCRef(parameter.ParameterType.GetCRef(), parameter.ParameterType.GetDisplayName()); } }, parameter => output.Section(() => doc?.Parameters.For(parameter.Name, output.Xml, name => Log.WarnMisisngParameterDoc(this, name)))); }
public virtual void WriteTypeParametersSection(int level, DocumentFormatter output, OutputContext context, IEnumerable <Type> typeParameters) { if (typeParameters == null || !typeParameters.Any()) { return; } var doc = context.Document.Of(this); output.Header(level, "Type Parameters"); output.DefinitionList(typeParameters, typeParameter => output.Text(typeParameter.Name, TextStyles.Teletype), typeParameter => output.Section(() => { if (WriteTypeParamDoc(doc, typeParameter.Name)) { return; } if (!typeParameter.IsGenericMethodParameter) { for (var parent = Owner; parent != null; parent = parent.Owner) { if (WriteTypeParamDoc(context.Document.Of(parent), typeParameter.Name)) { return; } } } Log.WarnMisisngTypeParameterDoc(this, typeParameter.Name); })); bool WriteTypeParamDoc(XmlMember ownerDoc, string paramName) { if (ownerDoc != null && ownerDoc.TypeParameters.TryGetValue(paramName, out var paramDoc)) { output.Xml(paramDoc); return(true); } return(false); } }
public virtual void WriteReturnValueSection(int level, DocumentFormatter output, OutputContext context, Type returnType) { if (returnType == null || returnType == typeof(void)) { return; } var doc = context.Document.Of(this); if (doc != null && doc.Returns.Count == 0) { Log.WarnMisisngReturnDoc(this); } output.Header(level, "Return Value"); output.DefinitionList(new[] { returnType }, type => output.LinkCRef(type.GetCRef(), type.GetDisplayName()), type => output.Xml(doc?.Returns)); }