|
21 | 21 | namespace FirebirdSql.Data.Types;
|
22 | 22 |
|
23 | 23 | [StructLayout(LayoutKind.Auto)]
|
24 |
| -public readonly struct FbZonedDateTime : IEquatable<FbZonedDateTime> |
| 24 | +public readonly struct FbZonedDateTime : IEquatable<FbZonedDateTime>, IConvertible |
25 | 25 | {
|
26 | 26 | public DateTime DateTime { get; }
|
27 | 27 | public string TimeZone { get; }
|
@@ -72,8 +72,43 @@ public override int GetHashCode()
|
72 | 72 | }
|
73 | 73 | }
|
74 | 74 |
|
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 | + TypeCode IConvertible.GetTypeCode() => TypeCode.Object; |
| 78 | + |
| 79 | + DateTime IConvertible.ToDateTime(IFormatProvider provider) => DateTime; |
| 80 | + |
| 81 | + string IConvertible.ToString(IFormatProvider provider) => ToString(); |
| 82 | + |
| 83 | + object IConvertible.ToType(Type conversionType, IFormatProvider provider) |
| 84 | + => ReferenceEquals(conversionType, typeof(FbZonedDateTime)) ? this : throw new InvalidCastException(conversionType?.FullName); |
| 85 | + |
| 86 | + bool IConvertible.ToBoolean(IFormatProvider provider) => throw new InvalidCastException(nameof(Boolean)); |
| 87 | + |
| 88 | + byte IConvertible.ToByte(IFormatProvider provider) => throw new InvalidCastException(nameof(Byte)); |
| 89 | + |
| 90 | + char IConvertible.ToChar(IFormatProvider provider) => throw new InvalidCastException(nameof(Char)); |
| 91 | + |
| 92 | + decimal IConvertible.ToDecimal(IFormatProvider provider) => throw new InvalidCastException(nameof(Decimal)); |
| 93 | + |
| 94 | + double IConvertible.ToDouble(IFormatProvider provider) => throw new InvalidCastException(nameof(Double)); |
| 95 | + |
| 96 | + short IConvertible.ToInt16(IFormatProvider provider) => throw new InvalidCastException(nameof(Int16)); |
| 97 | + |
| 98 | + int IConvertible.ToInt32(IFormatProvider provider) => throw new InvalidCastException(nameof(Int32)); |
| 99 | + |
| 100 | + long IConvertible.ToInt64(IFormatProvider provider) => throw new InvalidCastException(nameof(Int64)); |
| 101 | + |
| 102 | + sbyte IConvertible.ToSByte(IFormatProvider provider) => throw new InvalidCastException(nameof(SByte)); |
| 103 | + |
| 104 | + float IConvertible.ToSingle(IFormatProvider provider) => throw new InvalidCastException(nameof(Single)); |
| 105 | + |
| 106 | + ushort IConvertible.ToUInt16(IFormatProvider provider) => throw new InvalidCastException(nameof(UInt16)); |
| 107 | + |
| 108 | + uint IConvertible.ToUInt32(IFormatProvider provider) => throw new InvalidCastException(nameof(UInt32)); |
| 109 | + |
| 110 | + ulong IConvertible.ToUInt64(IFormatProvider provider) => throw new InvalidCastException(nameof(UInt64)); |
| 111 | + |
77 | 112 | public static bool operator ==(FbZonedDateTime lhs, FbZonedDateTime rhs) => lhs.Equals(rhs);
|
78 | 113 |
|
79 | 114 | public static bool operator !=(FbZonedDateTime lhs, FbZonedDateTime rhs) => lhs.Equals(rhs);
|
|
0 commit comments