怎樣讓引用類庫的類在HelpPage上顯示Description

 
 
最近在作 web api 開發的時候遇到這樣的問題,即 HelpPage 裏只能顯示 api 控制器上的註釋,對於那些引用了外部類庫的類(好比POST提交須要用到的類),就沒法顯示它們的備註,在 網上找到了解決方法,現分享給你們:
 
 
 
一、對引用的類庫右鍵,屬性,在生成裏面點擊「XML文檔文件」,定義好生成的XML文件路徑
( Web API 項目也要設置XML文檔輸出文件,這裏我是 XmlDocument.xml )
 
 
 
 
二、把類庫的 XML 文件拷貝到 Web API 項目的 App_Data 文件夾下,幷包含在項目中,這樣就應該有兩個XML文件
 
 
 
 
 
三、在 Web API 項目中,打開 Areas\HelpPage\HelpPageConfig 找到以下語句 :
 
config.SetDocumentationProvider(new XmlDocumentationProvider(
HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
將其替換成:
config.SetDocumentationProvider(new XmlDocumentationProvider(
HttpContext.Current.Server.MapPath("~/App_Data")));
(若是沒有,請自行添加)
 
 
 
 
四、打開 Areas\HelpPage\XmlDocumentationProvider :
 
a.把私有變量 _documentNavigator 替換爲:
 
private List<XPathNavigator> _documentNavigators = new List<XPathNavigator>();
 
b.而後構造器修改成:
 
public XmlDocumentationProvider(string documentPath)
{
  if (documentPath== null)
  {
    throw new ArgumentNullException("documentPath");
  }
 
  var files = new[] { "XmlDocument.xml", "引用的類庫XML文件名.xml" };
  foreach (var file in files)
  {
    XPathDocument xpath = new XPathDocument(Path.Combine(documentPath, file));
    _documentNavigators.Add(xpath.CreateNavigator());
  }
}

 

c. 在構造器後面添加一個方法:
 
private XPathNavigator SelectSingleNode(string selectExpression)
{
  foreach (var navigator in _documentNavigators)
  {
    var propertyNode = navigator.SelectSingleNode(selectExpression);
    if (propertyNode != null)
    return propertyNode;
  }
  return null;
}

 

d. 修復報錯的地方(應該有三個地方報錯),把 _documentNavigator.SelectSingleNode 替換爲上面寫的新方法 SelectSingleNode
 
 
 
 
最後,編譯運行 Web API ,對於引用類庫的類,已經有Description了(前提固然是這個類寫了summary註釋)。
相關文章
相關標籤/搜索