Skip to content

Commit ef20de8

Browse files
committed
Implement IConvertible for FbZonedDateTime
1 parent f6d63d9 commit ef20de8

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

src/FirebirdSql.Data.FirebirdClient/Types/FbZonedDateTime.cs

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
namespace FirebirdSql.Data.Types;
2222

2323
[StructLayout(LayoutKind.Auto)]
24-
public readonly struct FbZonedDateTime : IEquatable<FbZonedDateTime>
24+
public readonly struct FbZonedDateTime : IConvertible, IEquatable<FbZonedDateTime>
2525
{
2626
public DateTime DateTime { get; }
2727
public string TimeZone { get; }
@@ -72,8 +72,42 @@ public override int GetHashCode()
7272
}
7373
}
7474

75-
public bool Equals(FbZonedDateTime other) => DateTime.Equals(other.DateTime) && TimeZone.Equals(other.TimeZone, StringComparison.OrdinalIgnoreCase);
76-
75+
public bool Equals(FbZonedDateTime other) => DateTime.Equals(other.DateTime) && TimeZone.Equals(other.TimeZone, StringComparison.OrdinalIgnoreCase);
76+
77+
public TypeCode GetTypeCode() => TypeCode.Object;
78+
79+
public bool ToBoolean(IFormatProvider provider) => throw new InvalidCastException(nameof(Boolean));
80+
81+
public byte ToByte(IFormatProvider provider) => throw new InvalidCastException(nameof(Byte));
82+
83+
public char ToChar(IFormatProvider provider) => throw new InvalidCastException(nameof(Char));
84+
85+
public DateTime ToDateTime(IFormatProvider provider) => DateTime;
86+
87+
public decimal ToDecimal(IFormatProvider provider) => throw new InvalidCastException(nameof(Decimal));
88+
89+
public double ToDouble(IFormatProvider provider) => throw new InvalidCastException(nameof(Double));
90+
91+
public short ToInt16(IFormatProvider provider) => throw new InvalidCastException(nameof(Int16));
92+
93+
public int ToInt32(IFormatProvider provider) => throw new InvalidCastException(nameof(Int32));
94+
95+
public long ToInt64(IFormatProvider provider) => throw new InvalidCastException(nameof(Int64));
96+
97+
public sbyte ToSByte(IFormatProvider provider) => throw new InvalidCastException(nameof(SByte));
98+
99+
public float ToSingle(IFormatProvider provider) => throw new InvalidCastException(nameof(Single));
100+
101+
public string ToString(IFormatProvider provider) => throw new InvalidCastException(nameof(String));
102+
103+
public object ToType(Type conversionType, IFormatProvider provider) => throw new InvalidCastException(nameof(conversionType));
104+
105+
public ushort ToUInt16(IFormatProvider provider) => throw new InvalidCastException(nameof(UInt16));
106+
107+
public uint ToUInt32(IFormatProvider provider) => throw new InvalidCastException(nameof(UInt32));
108+
109+
public ulong ToUInt64(IFormatProvider provider) => throw new InvalidCastException(nameof(UInt64));
110+
77111
public static bool operator ==(FbZonedDateTime lhs, FbZonedDateTime rhs) => lhs.Equals(rhs);
78112

79113
public static bool operator !=(FbZonedDateTime lhs, FbZonedDateTime rhs) => lhs.Equals(rhs);

0 commit comments

Comments
 (0)