Windows allows configuration of Measurement system
to Metric
or U.S.
Is there a way to use this setting to read (abbreviated) unit names in C#?
e.g. when displaying a weight in Metric
I want to show kg
but in U.S.
I want to show lb
. Similarly for length, volume, etc.
I've looked at SystemInformation, CultureInfo, Configuration, and Globalization, but didn't see anything obvious. Did I miss something or am I looking in the wrong place?
I believe the best you can do is to determine if your culture is metric or not and then handle it yourself. I don't think there's any built in formatting? I may be wrong though, but I cannot find any reference to it anywhere.
This will allow you to determine if your culture is metric or not:
CultureInfo culture = new CultureInfo("en-GB");
RegionInfo regionInfo = new RegionInfo(culture.LCID);
bool isMetric = regionInfo.IsMetric;
@GenericTypeTea is right about the RegionInfo
being the place to look.
Additionally F# contains a lot of features for working with units of measure. It might make sense to build some of what you need in F# and call it from C#.
See this blog post and the subsequent posts for information about F# and units of measure.
来源:https://stackoverflow.com/questions/1629490/accessing-measurement-system-unit-names-kg-lb-m-in-etc-in-c-sharp