private static DocumentedMethod MapMethod(IMethodInfo method, XmlDocumentationModel xmlModel)
{
var parameters = new List<DocumentedParameter>();
SummaryComment summary = null;
RemarksComment remarks = null;
IEnumerable<ExampleComment> examples = null;
ReturnsComment returns = null;
// Get the documentation for the type.
var member = xmlModel.Find(method.Identity);
if (member != null)
{
// Get the comments for the type.
summary = member.Comments.OfType<SummaryComment>().FirstOrDefault();
remarks = member.Comments.OfType<RemarksComment>().FirstOrDefault();
examples = member.Comments.OfType<ExampleComment>();
returns = member.Comments.OfType<ReturnsComment>().FirstOrDefault();
}
// Map parameters.
foreach (var parameterDefinition in method.Definition.Parameters.ToList())
{
ParamComment comment = null;
if (member != null)
{
// Try to get the comment for the current parameter.
comment = member.Comments.OfType<ParamComment>().FirstOrDefault(x => x.Name == parameterDefinition.Name);
}
var parameter = new DocumentedParameter(parameterDefinition, comment, method.Metadata);
parameters.Add(parameter);
}
var metadata = method.Metadata;
bool isPropertyAlias;
if (method.Definition.IsCakeAlias(out isPropertyAlias))
{
metadata = new AliasMetadataAdapter(metadata, isPropertyAlias);
}
return new DocumentedMethod(method, parameters, summary, remarks, examples, returns, metadata);
}