Skip to content
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

The SupportsSIUnitSystem property should no be needed #1463

Open
lipchev opened this issue Dec 16, 2024 · 0 comments
Open

The SupportsSIUnitSystem property should no be needed #1463

lipchev opened this issue Dec 16, 2024 · 0 comments

Comments

@lipchev
Copy link
Collaborator

lipchev commented Dec 16, 2024

You know how many of the quantities would throw an exception from their ToUnit/As(UnitSystem) method when they don't have any unit with a proper SI BaseUnit.. well I'd like to change that (at least in regards to UnitSystem.SI):

  • I think it's reasonable to say that no matter what unit system we use, "a dimensionless quantity should have the decimal fraction as it's base unit" - with the %, ppm, ppb etc. being the derived units. In the future we could probably talk about extending our definition of the BaseUnits (e.g. consider mg/mg as [M][M^-1] or something) but as long as the ratio is composed of the same base-units (i.e. no additional conversion such as x * 100) we could simplify the code generated for these methods to ignore the parameter (the unit system) and simply return the As(BaseUnit).
  • from memory, there are only a couple of other quantities which were failing (mostly due to simply missing their BaseUnits in the json-definition): I've already got these ready (as I needed them for something else)
  • from memory, the only breaking change w.r.t. the existing definitions was the Angle which used to have the DegreeCelsius as it's BaseUnit (which we've already fixed) and the FuelEfficiency, which I wanted to invert (I don't remember where I mentioned this), and for which I had to add the "SI unit" (don't quote me on that ) MeterPerCubicMeter (m/m³) (we could go even further and say that this should probably be it's BaseUnit but I haven't gone that far..😆)

Overall, I know that this can be done (as I've already removed the SupportsSIUnitSystem from my version of the tests, a few months ago..), so if you don't mind I'd like to do it for the v6.

PS In the future (or whenever you say), I'd also like to move the As(UnitSystem) and the ToUnit(UnitSystem) methods out of the IQuantity interface (similarly to what I propose in #1461 w.r.t. the "Equals with tolerance", these could be transformed into extension methods, without breaking the existing usages).

PS2 There is of course a lot more work to be done regarding the support for the other unit systems but I think we can keep the experimental flag on these for the v6 release, and come back to it later (I do have some ideas on the matter)

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

No branches or pull requests

1 participant