2014-06-17 16 views
6

Trong tài liệu mã nguồn của tôi, tôi thường sử dụng:Web Api Trợ giúp Trang - tất cả <see cref = "MyClass" /> bị thiếu

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

Và điều này có nghĩa độc đáo vào chuỗi dưới đây trong XmlDocument.xml, trong đó có các trang trợ giúp api được biên dịch trên web.

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

Nhưng vì một số lý do, tất cả các tham chiếu này sẽ không được hiển thị. Những gì chúng ta có được điều này là:

Get a for the specified object 

Chúng tôi tìm thấy một vài nguồn tin, nhưng không có vẻ làm việc. Không giúp:
Web Api Help Page- don't escape html in xml documentation

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

Bất kỳ ý tưởng?

Trả lời

3

Trong trợ giúp WebAPI 2, có một lớp được gọi là XmlDocumentationProvider. Trong lớp này, có một phương thức có tên là GetTagValue xử lý các thẻ Tóm tắt và Trả về. Ngoài ra còn có một phương thức có tên là GetDocumentation (có nhiều bội số, nhưng nó là phương thức có tham số HttpParameterDescriptor) xử lý các thẻ Param.

Tôi đã viết một hàm sử dụng RegEx để tìm tất cả "Xem Cref" và thay thế chúng bằng tên đối tượng cuối cùng được tìm thấy.

Các RegEx:

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

Chức năng:

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; 
} 

Trong GetTagValue, thay thế:

return node.Value.Trim(); 

với:

return CleanValue(node.InnerXml); 

Trong GetDocumentation thay thế:

return parameterNode.Value.Trim(); 

với:

return CleanValue(parameterNode.InnerXml); 
Các vấn đề liên quan