: . , , . , "${namespace}${namespace}${class}" "${namespace}${class}". , !
- , , XML- F #:
Visual Studio 2013 (, , F #), , , post-build, XML. , , . Areas/HelpPage/XmlDocumentationProvider :
public string GetDocumentation(MemberInfo member)
... :
public string GetDocumentation(MemberInfo member)
{
string selectExpression;
bool isRecord = FSharpType.IsRecord(member.DeclaringType, FSharpOption<BindingFlags>.None);
if (isRecord)
{
Regex matchTypeName = new Regex(@"(?<namespace>(?:[_\p{L}\p{Nl}]+\.)*)(?<class>[_\p{L}\p{Nl}]+)$");
string classExpression = matchTypeName.Replace(GetTypeName(member.DeclaringType), "${namespace}${namespace}${class}");
string memberExpression = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", classExpression, member.Name);
selectExpression = String.Format(CultureInfo.InvariantCulture, FieldExpression, memberExpression);
}
else
{
string expression = member.MemberType == MemberTypes.Field ? FieldExpression : PropertyExpression;
string memberName = String.Format(CultureInfo.InvariantCulture, "{0}.{1}", GetTypeName(member.DeclaringType), member.Name);
selectExpression = String.Format(CultureInfo.InvariantCulture, expression, memberName);
}
XPathNavigator propertyNode = _documentNavigator.SelectSingleNode(selectExpression);
return GetTagValue(propertyNode, "summary");
}
! , -API, , . .