Skip to content

Commit d2fb4b4

Browse files
authored
Removing the IConvertible interface and fixing the JsonNet converters handling for nulls (#1550)
Removing the `IConvertible` interface and fixing the JsonNet converters handling for nulls fixes #1465
1 parent 7244e04 commit d2fb4b4

File tree

263 files changed

+294
-31571
lines changed

Some content is hidden

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

263 files changed

+294
-31571
lines changed

CodeGen/Generators/UnitsNetGen/QuantityGenerator.cs

Lines changed: 1 addition & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ namespace UnitsNet
105105
#endif
106106
IComparable,
107107
IComparable<{_quantity.Name}>,
108-
IConvertible,
109108
IEquatable<{_quantity.Name}>,
110109
IFormattable");
111110

@@ -136,7 +135,6 @@ namespace UnitsNet
136135
GenerateEqualityAndComparison();
137136
GenerateConversionMethods();
138137
GenerateToString();
139-
GenerateIConvertibleMethods();
140138

141139
Writer.WL($@"
142140
}}
@@ -1195,109 +1193,7 @@ public string ToString(string? format, IFormatProvider? provider)
11951193
#endregion
11961194
" );
11971195
}
1198-
1199-
private void GenerateIConvertibleMethods()
1200-
{
1201-
Writer.WL($@"
1202-
#region IConvertible Methods
1203-
1204-
TypeCode IConvertible.GetTypeCode()
1205-
{{
1206-
return TypeCode.Object;
1207-
}}
1208-
1209-
bool IConvertible.ToBoolean(IFormatProvider? provider)
1210-
{{
1211-
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to bool is not supported."");
1212-
}}
1213-
1214-
byte IConvertible.ToByte(IFormatProvider? provider)
1215-
{{
1216-
return Convert.ToByte(_value);
1217-
}}
1218-
1219-
char IConvertible.ToChar(IFormatProvider? provider)
1220-
{{
1221-
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to char is not supported."");
1222-
}}
1223-
1224-
DateTime IConvertible.ToDateTime(IFormatProvider? provider)
1225-
{{
1226-
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to DateTime is not supported."");
1227-
}}
1228-
1229-
decimal IConvertible.ToDecimal(IFormatProvider? provider)
1230-
{{
1231-
return Convert.ToDecimal(_value);
1232-
}}
1233-
1234-
double IConvertible.ToDouble(IFormatProvider? provider)
1235-
{{
1236-
return Convert.ToDouble(_value);
1237-
}}
1238-
1239-
short IConvertible.ToInt16(IFormatProvider? provider)
1240-
{{
1241-
return Convert.ToInt16(_value);
1242-
}}
1243-
1244-
int IConvertible.ToInt32(IFormatProvider? provider)
1245-
{{
1246-
return Convert.ToInt32(_value);
1247-
}}
1248-
1249-
long IConvertible.ToInt64(IFormatProvider? provider)
1250-
{{
1251-
return Convert.ToInt64(_value);
1252-
}}
1253-
1254-
sbyte IConvertible.ToSByte(IFormatProvider? provider)
1255-
{{
1256-
return Convert.ToSByte(_value);
1257-
}}
1258-
1259-
float IConvertible.ToSingle(IFormatProvider? provider)
1260-
{{
1261-
return Convert.ToSingle(_value);
1262-
}}
1263-
1264-
string IConvertible.ToString(IFormatProvider? provider)
1265-
{{
1266-
return ToString(null, provider);
1267-
}}
1268-
1269-
object IConvertible.ToType(Type conversionType, IFormatProvider? provider)
1270-
{{
1271-
if (conversionType == typeof({_quantity.Name}))
1272-
return this;
1273-
else if (conversionType == typeof({_unitEnumName}))
1274-
return Unit;
1275-
else if (conversionType == typeof(QuantityInfo))
1276-
return {_quantity.Name}.Info;
1277-
else if (conversionType == typeof(BaseDimensions))
1278-
return {_quantity.Name}.BaseDimensions;
1279-
else
1280-
throw new InvalidCastException($""Converting {{typeof({_quantity.Name})}} to {{conversionType}} is not supported."");
1281-
}}
1282-
1283-
ushort IConvertible.ToUInt16(IFormatProvider? provider)
1284-
{{
1285-
return Convert.ToUInt16(_value);
1286-
}}
1287-
1288-
uint IConvertible.ToUInt32(IFormatProvider? provider)
1289-
{{
1290-
return Convert.ToUInt32(_value);
1291-
}}
1292-
1293-
ulong IConvertible.ToUInt64(IFormatProvider? provider)
1294-
{{
1295-
return Convert.ToUInt64(_value);
1296-
}}
1297-
1298-
#endregion");
1299-
}
1300-
1196+
13011197
/// <inheritdoc cref="GetObsoleteAttributeOrNull(string)"/>
13021198
private static string? GetObsoleteAttributeOrNull(Quantity quantity) => GetObsoleteAttributeOrNull(quantity.ObsoleteText);
13031199

CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs

Lines changed: 0 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,153 +1092,6 @@ public void ToString_NullProvider_EqualsCurrentCulture(string format)
10921092
Assert.Equal(quantity.ToString(format, CultureInfo.CurrentCulture), quantity.ToString(format, null));
10931093
}}
10941094
1095-
[Fact]
1096-
public void Convert_ToBool_ThrowsInvalidCastException()
1097-
{{
1098-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1099-
Assert.Throws<InvalidCastException>(() => Convert.ToBoolean(quantity));
1100-
}}
1101-
1102-
[Fact]
1103-
public void Convert_ToByte_EqualsValueAsSameType()
1104-
{{
1105-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1106-
Assert.Equal((byte)quantity.Value, Convert.ToByte(quantity));
1107-
}}
1108-
1109-
[Fact]
1110-
public void Convert_ToChar_ThrowsInvalidCastException()
1111-
{{
1112-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1113-
Assert.Throws<InvalidCastException>(() => Convert.ToChar(quantity));
1114-
}}
1115-
1116-
[Fact]
1117-
public void Convert_ToDateTime_ThrowsInvalidCastException()
1118-
{{
1119-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1120-
Assert.Throws<InvalidCastException>(() => Convert.ToDateTime(quantity));
1121-
}}
1122-
1123-
[Fact]
1124-
public void Convert_ToDecimal_EqualsValueAsSameType()
1125-
{{
1126-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1127-
Assert.Equal((decimal)quantity.Value, Convert.ToDecimal(quantity));
1128-
}}
1129-
1130-
[Fact]
1131-
public void Convert_ToDouble_EqualsValueAsSameType()
1132-
{{
1133-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1134-
Assert.Equal((double)quantity.Value, Convert.ToDouble(quantity));
1135-
}}
1136-
1137-
[Fact]
1138-
public void Convert_ToInt16_EqualsValueAsSameType()
1139-
{{
1140-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1141-
Assert.Equal((short)quantity.Value, Convert.ToInt16(quantity));
1142-
}}
1143-
1144-
[Fact]
1145-
public void Convert_ToInt32_EqualsValueAsSameType()
1146-
{{
1147-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1148-
Assert.Equal((int)quantity.Value, Convert.ToInt32(quantity));
1149-
}}
1150-
1151-
[Fact]
1152-
public void Convert_ToInt64_EqualsValueAsSameType()
1153-
{{
1154-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1155-
Assert.Equal((long)quantity.Value, Convert.ToInt64(quantity));
1156-
}}
1157-
1158-
[Fact]
1159-
public void Convert_ToSByte_EqualsValueAsSameType()
1160-
{{
1161-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1162-
Assert.Equal((sbyte)quantity.Value, Convert.ToSByte(quantity));
1163-
}}
1164-
1165-
[Fact]
1166-
public void Convert_ToSingle_EqualsValueAsSameType()
1167-
{{
1168-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1169-
Assert.Equal((float)quantity.Value, Convert.ToSingle(quantity));
1170-
}}
1171-
1172-
[Fact]
1173-
public void Convert_ToString_EqualsToString()
1174-
{{
1175-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1176-
Assert.Equal(quantity.ToString(), Convert.ToString(quantity));
1177-
}}
1178-
1179-
[Fact]
1180-
public void Convert_ToUInt16_EqualsValueAsSameType()
1181-
{{
1182-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1183-
Assert.Equal((ushort)quantity.Value, Convert.ToUInt16(quantity));
1184-
}}
1185-
1186-
[Fact]
1187-
public void Convert_ToUInt32_EqualsValueAsSameType()
1188-
{{
1189-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1190-
Assert.Equal((uint)quantity.Value, Convert.ToUInt32(quantity));
1191-
}}
1192-
1193-
[Fact]
1194-
public void Convert_ToUInt64_EqualsValueAsSameType()
1195-
{{
1196-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1197-
Assert.Equal((ulong)quantity.Value, Convert.ToUInt64(quantity));
1198-
}}
1199-
1200-
[Fact]
1201-
public void Convert_ChangeType_SelfType_EqualsSelf()
1202-
{{
1203-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1204-
Assert.Equal(quantity, Convert.ChangeType(quantity, typeof({_quantity.Name})));
1205-
}}
1206-
1207-
[Fact]
1208-
public void Convert_ChangeType_UnitType_EqualsUnit()
1209-
{{
1210-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1211-
Assert.Equal(quantity.Unit, Convert.ChangeType(quantity, typeof({_unitEnumName})));
1212-
}}
1213-
1214-
[Fact]
1215-
public void Convert_ChangeType_QuantityInfo_EqualsQuantityInfo()
1216-
{{
1217-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1218-
Assert.Equal({_quantity.Name}.Info, Convert.ChangeType(quantity, typeof(QuantityInfo)));
1219-
}}
1220-
1221-
[Fact]
1222-
public void Convert_ChangeType_BaseDimensions_EqualsBaseDimensions()
1223-
{{
1224-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1225-
Assert.Equal({_quantity.Name}.BaseDimensions, Convert.ChangeType(quantity, typeof(BaseDimensions)));
1226-
}}
1227-
1228-
[Fact]
1229-
public void Convert_ChangeType_InvalidType_ThrowsInvalidCastException()
1230-
{{
1231-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1232-
Assert.Throws<InvalidCastException>(() => Convert.ChangeType(quantity, typeof(QuantityFormatter)));
1233-
}}
1234-
1235-
[Fact]
1236-
public void Convert_GetTypeCode_Returns_Object()
1237-
{{
1238-
var quantity = {_quantity.Name}.From{_baseUnit.PluralName}(1.0);
1239-
Assert.Equal(TypeCode.Object, Convert.GetTypeCode(quantity));
1240-
}}
1241-
12421095
[Fact]
12431096
public void GetHashCode_Equals()
12441097
{{

0 commit comments

Comments
 (0)