Skip to content

Wrong string representation of Parameter #2035

Description

@hmG3

Describe the bug
After upgrading from version 106 to 109 I noticed some of our logic is broken.
We are using an expression to build query strings like

String.Join('&',request.Parameters.Where(p =>p.Type==ParameterType.GetOrPost));

which calls ToString() method for each parameter object, and we should get the resulting string like param1=value1&param2=value2.

Even though there is already a proper override in the base abstract class

publicoverridestringToString()=>$"{Name}={Value}";

it doesn't work for all derived record classes of Parameter because each record class creates its own override of ToString() hiding the one from the base class.

A possible solution here might be adding sealed modifier to stop the compiler from synthesizing new overrides:

publicsealedoverridestringToString()=>$"{Name}={Value}";

To Reproduce

varrequest=newRestRequest("api/test");request.AddParameter("param1","value1");request.AddParameter("param2","value2");varqueryString=String.Join('&',request.Parameters);Assert.Equal("param1=value1&param2=value2",queryString);//fail

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions