我同意 gurra777 的观点,即创建一个新类是更安全的升级路径。我从那个解决方案开始,但它涉及大量的复制/意大利面,在几次包更新后很容易过时。
相反,我保留了一组XmlDocumentationProvider
孩子。对于每个实现方法,我都在调用孩子来获取第一个非空结果。
public class MultiXmlDocumentationProvider : IDocumentationProvider, IModelDocumentationProvider
{
private IList<XmlDocumentationProvider> _documentationProviders;
public MultiXmlDocumentationProvider(string xmlDocFilesPath)
{
_documentationProviders = new List<XmlDocumentationProvider>();
foreach (string file in Directory.GetFiles(xmlDocFilesPath, "*.xml"))
{
_documentationProviders.Add(new XmlDocumentationProvider(file));
}
}
public string GetDocumentation(System.Reflection.MemberInfo member)
{
return _documentationProviders
.Select(x => x.GetDocumentation(member))
.FirstOrDefault(x => !string.IsNullOrWhiteSpace(x));
}
//and so on...
HelpPageConfig 注册与 gurra777 的答案相同,
config.SetDocumentationProvider(new MultiXmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/")));