public static string GetMethodDocCommentName (MemberCore mc, ParametersCompiled parameters, DeclSpace ds)
{
IParameterData [] plist = parameters.FixedParameters;
string paramSpec = String.Empty;
if (plist != null) {
StringBuilder psb = new StringBuilder ();
int i = 0;
foreach (Parameter p in plist) {
psb.Append (psb.Length != 0 ? "," : "(");
psb.Append (GetSignatureForDoc (parameters.Types [i++]));
if ((p.ModFlags & Parameter.Modifier.ISBYREF) != 0)
psb.Append ('@');
}
paramSpec = psb.ToString ();
}
if (paramSpec.Length > 0)
paramSpec += ")";
string name = mc.Name;
if (mc is Constructor)
name = "#ctor";
else if (mc is InterfaceMemberBase) {
var imb = (InterfaceMemberBase) mc;
name = imb.GetFullName (imb.ShortName);
}
name = name.Replace ('.', '#');
if (mc.MemberName.TypeArguments != null && mc.MemberName.TypeArguments.Count > 0)
name += "``" + mc.MemberName.CountTypeArguments;
string suffix = String.Empty;
Operator op = mc as Operator;
if (op != null) {
switch (op.OperatorType) {
case Operator.OpType.Implicit:
case Operator.OpType.Explicit:
suffix = "~" + GetSignatureForDoc (op.ReturnType);
break;
}
}
return String.Concat (mc.DocCommentHeader, ds.Name, ".", name, paramSpec, suffix);
}