Skip to content

Making the ToString paramters optional (IFormattable) #1553

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 1 addition & 22 deletions CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1162,32 +1162,11 @@ public override string ToString()
return ToString(null, null);
}}

/// <summary>
/// Gets the default string representation of value and unit using the given format provider.
/// </summary>
/// <returns>String representation.</returns>
/// <param name=""provider"">Format to use for localization and number formatting. Defaults to <see cref=""CultureInfo.CurrentCulture"" /> if null.</param>
public string ToString(IFormatProvider? provider)
{{
return ToString(null, provider);
}}

/// <inheritdoc cref=""QuantityFormatter.Format{{TQuantity}}(TQuantity, string?, IFormatProvider?)""/>
/// <summary>
/// Gets the string representation of this instance in the specified format string using <see cref=""CultureInfo.CurrentCulture"" />.
/// </summary>
/// <param name=""format"">The format string.</param>
/// <returns>The string representation.</returns>
public string ToString(string? format)
{{
return ToString(format, null);
}}

/// <inheritdoc cref=""QuantityFormatter.Format{{TQuantity}}(TQuantity, string?, IFormatProvider?)""/>
/// <summary>
/// Gets the string representation of this instance in the specified format string using the specified format provider, or <see cref=""CultureInfo.CurrentCulture"" /> if null.
/// </summary>
public string ToString(string? format, IFormatProvider? provider)
public string ToString(string? format = null, IFormatProvider? provider = null)
{{
return QuantityFormatter.Default.Format(this, format, provider);
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1045,7 +1045,7 @@ public void ToString_WithSwedishCulture_ReturnsUnitAbbreviationForEnglishCulture
foreach (var unit in _quantity.Units)
{
Writer.WL($@"
Assert.Equal(""1{GetEnglishAbbreviation(unit)}"", new {_quantity.Name}(1, {GetUnitFullName(unit)}).ToString(swedishCulture));");
Assert.Equal(""1{GetEnglishAbbreviation(unit)}"", new {_quantity.Name}(1, {GetUnitFullName(unit)}).ToString(null, swedishCulture));");
}
Writer.WL($@"
}}
Expand Down
4 changes: 2 additions & 2 deletions UnitsNet.Tests/CustomCode/LengthTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -167,15 +167,15 @@ public void LengthTimesSpecificWeightEqualsPressure()
public void ToStringReturnsCorrectNumberAndUnitWithDefaultUnitWhichIsMeter()
{
var meter = Length.FromMeters(5);
string meterString = meter.ToString(CultureInfo.InvariantCulture);
string meterString = meter.ToString(null, CultureInfo.InvariantCulture);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This I don't like, c# users expect certain ToString() signatures to exist and having to use named parameters or pass null is awkward.

Assert.Equal("5 m", meterString);
}

[Fact]
public void ToStringReturnsCorrectNumberAndUnitWithCentimeterAsDefaultUnit()
{
var value = Length.From(2, LengthUnit.Centimeter);
string valueString = value.ToString(CultureInfo.InvariantCulture);
string valueString = value.ToString(null, CultureInfo.InvariantCulture);
Assert.Equal("2 cm", valueString);
}

Expand Down
1 change: 0 additions & 1 deletion UnitsNet.Tests/CustomQuantities/HowMuch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ public IQuantity ToUnit(Enum unit)

public override string ToString() => $"{Value} {Unit}";
public string ToString(string? format, IFormatProvider? formatProvider) => $"HowMuch ({format}, {formatProvider})";
public string ToString(IFormatProvider? provider) => $"HowMuch ({provider})";

#endregion
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 14 additions & 14 deletions UnitsNet.Tests/GeneratedCode/TestsBase/AccelerationTestsBase.g.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading