private void ApplyPropertyComments(OpenApiSchema propertySchema, MemberInfo memberInfo) { var memberName = XmlCommentsMemberNameHelper.GetMemberNameForMember(memberInfo); var memberNode = _xmlNavigator.SelectSingleNode(string.Format(MemberXPath, memberName)); if (memberNode == null) { return; } var summaryNode = memberNode.SelectSingleNode(SummaryTag); if (summaryNode != null) { propertySchema.Description = XmlCommentsTextHelper.Humanize(summaryNode.InnerXml); } var exampleNode = memberNode.SelectSingleNode(ExampleXPath); if (exampleNode != null) { var exampleString = XmlCommentsTextHelper.Humanize(exampleNode.InnerXml); var memberType = (memberInfo.MemberType & MemberTypes.Field) != 0 ? ((FieldInfo)memberInfo).FieldType : ((PropertyInfo)memberInfo).PropertyType; propertySchema.Example = ConvertToOpenApiType(exampleString, memberType); } }
private void ApplyPropertyComments(Schema propertySchema, MemberInfo memberInfo) { var memberName = XmlCommentsMemberNameHelper.GetMemberNameForMember(memberInfo); var memberNode = _xmlNavigator.SelectSingleNode(string.Format(MemberXPath, memberName)); if (memberNode == null) { return; } var summaryNode = memberNode.SelectSingleNode(SummaryTag); if (summaryNode != null) { propertySchema.Description = XmlCommentsTextHelper.Humanize(summaryNode.InnerXml); } }
private void ApplyPropertiesXmlToPropertyParameters( IList <OpenApiParameter> parameters, ApiDescription apiDescription) { if (parameters == null) { return; } foreach (var parameter in parameters) { // Check for a corresponding API parameter (from ApiExplorer) that's property-bound? var propertyParam = apiDescription.ParameterDescriptions .Where(p => p.ModelMetadata?.ContainerType != null && p.ModelMetadata?.PropertyName != null) .FirstOrDefault(p => parameter.Name.Equals(p.Name, StringComparison.OrdinalIgnoreCase)); if (propertyParam == null) { continue; } var metadata = propertyParam.ModelMetadata; var memberInfo = metadata.ContainerType.GetMember(metadata.PropertyName).FirstOrDefault(); if (memberInfo == null) { continue; } var memberName = XmlCommentsMemberNameHelper.GetMemberNameForMember(memberInfo); var memberNode = _xmlNavigator.SelectSingleNode(string.Format(MemberXPath, memberName)); if (memberNode == null) { continue; } var summaryNode = memberNode.SelectSingleNode(SummaryXPath); if (summaryNode != null) { parameter.Description = XmlCommentsTextHelper.Humanize(summaryNode.InnerXml); } } }