Skip to content

Commit 2ef6659

Browse files
authored
Move init of static props to static constructor (#1025)
For deterministic initialization of static properties.
1 parent e341c81 commit 2ef6659

File tree

226 files changed

+2943
-1592
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

226 files changed

+2943
-1592
lines changed

CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,20 @@ private void GenerateStaticConstructor()
119119
Writer.WL($@"
120120
static {_quantity.Name}()
121121
{{");
122-
Writer.WL(_isDimensionless
123-
? @"
124-
BaseDimensions = BaseDimensions.Dimensionless;
125-
"
126-
: $@"
127-
BaseDimensions = new BaseDimensions({baseDimensions.L}, {baseDimensions.M}, {baseDimensions.T}, {baseDimensions.I}, {baseDimensions.Θ}, {baseDimensions.N}, {baseDimensions.J});
128-
");
122+
Writer.WL(_isDimensionless ? $@"
123+
BaseDimensions = BaseDimensions.Dimensionless;" : $@"
124+
BaseDimensions = new BaseDimensions({baseDimensions.L}, {baseDimensions.M}, {baseDimensions.T}, {baseDimensions.I}, {baseDimensions.Θ}, {baseDimensions.N}, {baseDimensions.J});");
129125

130126
Writer.WL($@"
127+
BaseUnit = {_unitEnumName}.{_quantity.BaseUnit};
128+
MaxValue = new {_quantity.Name}({_valueType}.MaxValue, BaseUnit);
129+
MinValue = new {_quantity.Name}({_valueType}.MinValue, BaseUnit);
130+
QuantityType = QuantityType.{_quantity.Name};
131+
Units = Enum.GetValues(typeof({_unitEnumName})).Cast<{_unitEnumName}>().Except(new {_unitEnumName}[]{{ {_unitEnumName}.Undefined }}).ToArray();
132+
Zero = new {_quantity.Name}(0, BaseUnit);
131133
Info = new QuantityInfo<{_unitEnumName}>(""{_quantity.Name}"",
132-
new UnitInfo<{_unitEnumName}>[] {{");
134+
new UnitInfo<{_unitEnumName}>[]
135+
{{");
133136

134137
foreach (var unit in _quantity.Units)
135138
{
@@ -232,35 +235,35 @@ private void GenerateStaticProperties()
232235
/// <summary>
233236
/// The base unit of {_quantity.Name}, which is {_quantity.BaseUnit}. All conversions go via this value.
234237
/// </summary>
235-
public static {_unitEnumName} BaseUnit {{ get; }} = {_unitEnumName}.{_quantity.BaseUnit};
238+
public static {_unitEnumName} BaseUnit {{ get; }}
236239
237240
/// <summary>
238241
/// Represents the largest possible value of {_quantity.Name}
239242
/// </summary>
240243
[Obsolete(""MaxValue and MinValue will be removed. Choose your own value or use nullability for unbounded lower/upper range checks. See discussion in https://github.com/angularsen/UnitsNet/issues/848."")]
241-
public static {_quantity.Name} MaxValue {{ get; }} = new {_quantity.Name}({_valueType}.MaxValue, BaseUnit);
244+
public static {_quantity.Name} MaxValue {{ get; }}
242245
243246
/// <summary>
244247
/// Represents the smallest possible value of {_quantity.Name}
245248
/// </summary>
246249
[Obsolete(""MaxValue and MinValue will be removed. Choose your own value or use nullability for unbounded lower/upper range checks. See discussion in https://github.com/angularsen/UnitsNet/issues/848."")]
247-
public static {_quantity.Name} MinValue {{ get; }} = new {_quantity.Name}({_valueType}.MinValue, BaseUnit);
250+
public static {_quantity.Name} MinValue {{ get; }}
248251
249252
/// <summary>
250253
/// The <see cref=""QuantityType"" /> of this quantity.
251254
/// </summary>
252255
[Obsolete(""QuantityType will be removed in the future. Use the Info property instead."")]
253-
public static QuantityType QuantityType {{ get; }} = QuantityType.{_quantity.Name};
256+
public static QuantityType QuantityType {{ get; }}
254257
255258
/// <summary>
256259
/// All units of measurement for the {_quantity.Name} quantity.
257260
/// </summary>
258-
public static {_unitEnumName}[] Units {{ get; }} = Enum.GetValues(typeof({_unitEnumName})).Cast<{_unitEnumName}>().Except(new {_unitEnumName}[]{{ {_unitEnumName}.Undefined }}).ToArray();
261+
public static {_unitEnumName}[] Units {{ get; }}
259262
260263
/// <summary>
261264
/// Gets an instance of this quantity with a value of 0 in the base unit {_quantity.BaseUnit}.
262265
/// </summary>
263-
public static {_quantity.Name} Zero {{ get; }} = new {_quantity.Name}(0, BaseUnit);
266+
public static {_quantity.Name} Zero {{ get; }}
264267
265268
#endregion
266269
");

CodeGen/Generators/UnitsNetWrcGen/QuantityGenerator.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,17 @@ private void GenerateStaticConstructor()
110110
Writer.WL($@"
111111
static {_quantity.Name}()
112112
{{");
113-
Writer.WL(_isDimensionless
114-
? @"
115-
BaseDimensions = BaseDimensions.Dimensionless;"
116-
: $@"
113+
Writer.WL(_isDimensionless ? $@"
114+
BaseDimensions = BaseDimensions.Dimensionless;" : $@"
117115
BaseDimensions = new BaseDimensions({baseDimensions.L}, {baseDimensions.M}, {baseDimensions.T}, {baseDimensions.I}, {baseDimensions.Θ}, {baseDimensions.N}, {baseDimensions.J});");
118116

119117
Writer.WL($@"
118+
BaseUnit = {_unitEnumName}.{_quantity.BaseUnit};
119+
MaxValue = new {_quantity.Name}({_valueType}.MaxValue, BaseUnit);
120+
MinValue = new {_quantity.Name}({_valueType}.MinValue, BaseUnit);
121+
QuantityType = QuantityType.{_quantity.Name};
122+
Units = Enum.GetValues(typeof({_unitEnumName})).Cast<{_unitEnumName}>().Except(new {_unitEnumName}[]{{ {_unitEnumName}.Undefined }}).ToArray();
123+
Zero = new {_quantity.Name}(0, BaseUnit);
120124
Info = new QuantityInfo(QuantityType.{_quantity.Name}, Units.Cast<Enum>().ToArray(), BaseUnit, Zero, BaseDimensions);
121125
}}
122126
");
@@ -179,33 +183,33 @@ private void GenerateStaticProperties()
179183
/// <summary>
180184
/// The base unit of {_quantity.Name}, which is {_quantity.BaseUnit}. All conversions go via this value.
181185
/// </summary>
182-
public static {_unitEnumName} BaseUnit {{ get; }} = {_unitEnumName}.{_quantity.BaseUnit};
186+
public static {_unitEnumName} BaseUnit {{ get; }}
183187
184188
/// <summary>
185189
/// Represents the largest possible value of {_quantity.Name}
186190
/// </summary>
187-
public static {_quantity.Name} MaxValue {{ get; }} = new {_quantity.Name}({_valueType}.MaxValue, BaseUnit);
191+
public static {_quantity.Name} MaxValue {{ get; }}
188192
189193
/// <summary>
190194
/// Represents the smallest possible value of {_quantity.Name}
191195
/// </summary>
192-
public static {_quantity.Name} MinValue {{ get; }} = new {_quantity.Name}({_valueType}.MinValue, BaseUnit);
196+
public static {_quantity.Name} MinValue {{ get; }}
193197
194198
/// <summary>
195199
/// The <see cref=""QuantityType"" /> of this quantity.
196200
/// </summary>
197201
[Obsolete(""QuantityType will be removed in the future. Use the Info property instead."")]
198-
public static QuantityType QuantityType {{ get; }} = QuantityType.{_quantity.Name};
202+
public static QuantityType QuantityType {{ get; }}
199203
200204
/// <summary>
201205
/// All units of measurement for the {_quantity.Name} quantity.
202206
/// </summary>
203-
public static {_unitEnumName}[] Units {{ get; }} = Enum.GetValues(typeof({_unitEnumName})).Cast<{_unitEnumName}>().Except(new {_unitEnumName}[]{{ {_unitEnumName}.Undefined }}).ToArray();
207+
public static {_unitEnumName}[] Units {{ get; }}
204208
205209
/// <summary>
206210
/// Gets an instance of this quantity with a value of 0 in the base unit {_quantity.BaseUnit}.
207211
/// </summary>
208-
public static {_quantity.Name} Zero {{ get; }} = new {_quantity.Name}(0, BaseUnit);
212+
public static {_quantity.Name} Zero {{ get; }}
209213
210214
#endregion
211215
");

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Acceleration.g.cs

Lines changed: 12 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/AmountOfSubstance.g.cs

Lines changed: 12 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/AmplitudeRatio.g.cs

Lines changed: 12 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

UnitsNet.WindowsRuntimeComponent/GeneratedCode/Quantities/Angle.g.cs

Lines changed: 12 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)