2014-06-17 6 views
6

누락 내가 자주 사용 :웹 API 광고 도움말 페이지 - 모든 <참조 CREF = "MyClass에"/> 내 소스 코드 문서에서

Get a <see cref="Quote"/> for the specified <see cref="apiOrder"/> object. 

그리고 이것은 XmlDocument.xml에 아래의 문자열로 잘 변환, 컴파일 된 웹 API 도움말 페이지가 들어 있습니다.

Get a <see cref="T:Supertext.API.POCO.Quote"/> for the specified <see cref="!:apiOrder"/> object. 

하지만 몇 가지 이유로 이러한 참조는 모두 표시되지 않습니다. 우리가 얻을 것은 이것이다 :

Get a for the specified object 

우리는 몇 가지 소스를 찾았지만 아무것도 작동하는 것 같다 없습니다. 도움이되지 않음 : 오래된
Web Api Help Page- don't escape html in xml documentation

:
http://thesoftwaredudeblog.wordpress.com/2014/01/04/using-microsoft-asp-net-web-api-2-help-page-part-2/

어떤 아이디어?

답변

3

WebAPI 2 도움말에는 XmlDocumentationProvider이라는 클래스가 있습니다. 이 클래스에는 요약 및 반환 태그를 처리하는 GetTagValue이라는 메서드가 있습니다. 또한 GetDocumentation (배수가 있지만 HttpParameterDescriptor 매개 변수가있는 매개 변수) 메서드가 있는데이 매개 변수는 Param 태그를 처리합니다.

RegEx를 사용하여 모든 "See Cref"를 찾고 마지막으로 찾은 개체 이름으로 바꾸는 함수를 작성했습니다.

정규식 :

private static Regex SeeCodeReferenceRegEx = new Regex("<see cref=\\\"\\w:([\\w]+\\.)*(\\w+)\\\" */>", RegexOptions.Compiled); 

함수 : GetTagValue에서

private static string CleanValue(string value) 
{ 
    value = value.Trim(); 
    var matches = SeeCodeReferenceRegEx.Matches(value); 
    foreach (Match match in matches) 
     value = value.Replace(match.Groups[0].Value, match.Groups[2].Value); 
    return value; 
} 

가 바꾸

return node.Value.Trim(); 

와 :

에서
return CleanValue(node.InnerXml); 

0 대체 :

return parameterNode.Value.Trim(); 

로 :

return CleanValue(parameterNode.InnerXml);