Skip to content

error in name formation during in method XmlDocReader.TryGetMethodDescription  #1784

Closed
@hessenar

Description

@hessenar

In class XmlDocReader, method TryGetMethodDescription(MethodInfo info, out CommandHelpMetadata commandHelpMetadata) has an error.
If there are no parameters in the input parameter "info", then the variable "name" is formed incorrectly(with round empty bracket), and we try to get take "member" from "_members" using incorrect name.
now:

        var sb = new StringBuilder();

        sb.Append("M:");
        AppendTypeName(sb, info.DeclaringType);
        sb.Append(".")
          .Append(info.Name)
          .Append("(");

        bool first = true;
        foreach (ParameterInfo param in info.GetParameters())
        {
            if (first)
            {
                first = false;
            }
            else
            {
                sb.Append(",");
            }

            AppendTypeName(sb, param.ParameterType);
        }

        sb.Append(")");

        string name = sb.ToString();

        XElement member = _members.Elements("member")
                                 .FirstOrDefault(m => string.Equals(m.Attribute("name")?.Value, name));

i suggest doing this:

        var sb = new StringBuilder();

        sb.Append("M:");
        AppendTypeName(sb, info.DeclaringType);
        sb.Append(".")
          .Append(info.Name);

        var parameters = info.GetParameters();
        if (parameters.Length > 0)
        {
            sb.Append("(");
            bool first = true;
            foreach (ParameterInfo param in info.GetParameters())
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    sb.Append(",");
                }

                AppendTypeName(sb, param.ParameterType);
            }

            sb.Append(")");
        }

        string name = sb.ToString();

        XElement member = _members.Elements("member")
                                 .FirstOrDefault(m => string.Equals(m.Attribute("name")?.Value, name));

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions