-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Closed
Labels
Description
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¶m2=value2.
Even though there is already a proper override in the base abstract class
| public override string ToString() => $"{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:
public sealed override string ToString() => $"{Name}={Value}";To Reproduce
var request = new RestRequest("api/test");
request.AddParameter("param1", "value1");
request.AddParameter("param2", "value2");
var queryString = String.Join('&', request.Parameters);
Assert.Equal("param1=value1¶m2=value2", queryString); //failReactions are currently unavailable