1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System.Runtime.Serialization;
6 
7 namespace System
8 {
9     [Serializable]
10     public sealed class DBNull : ISerializable, IConvertible
11     {
DBNull()12         private DBNull()
13         {
14         }
15 
DBNull(SerializationInfo info, StreamingContext context)16         private DBNull(SerializationInfo info, StreamingContext context)
17         {
18             throw new NotSupportedException(SR.NotSupported_DBNullSerial);
19         }
20 
21         public static readonly DBNull Value = new DBNull();
22 
GetObjectData(SerializationInfo info, StreamingContext context)23         public void GetObjectData(SerializationInfo info, StreamingContext context)
24         {
25             UnitySerializationHolder.GetUnitySerializationInfo(info, UnitySerializationHolder.NullUnity);
26         }
27 
ToString()28         public override string ToString()
29         {
30             return string.Empty;
31         }
32 
ToString(IFormatProvider provider)33         public string ToString(IFormatProvider provider)
34         {
35             return string.Empty;
36         }
37 
GetTypeCode()38         public TypeCode GetTypeCode()
39         {
40             return TypeCode.DBNull;
41         }
42 
IConvertible.ToBoolean(IFormatProvider provider)43         bool IConvertible.ToBoolean(IFormatProvider provider)
44         {
45             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
46         }
47 
IConvertible.ToChar(IFormatProvider provider)48         char IConvertible.ToChar(IFormatProvider provider)
49         {
50             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
51         }
52 
IConvertible.ToSByte(IFormatProvider provider)53         sbyte IConvertible.ToSByte(IFormatProvider provider)
54         {
55             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
56         }
57 
IConvertible.ToByte(IFormatProvider provider)58         byte IConvertible.ToByte(IFormatProvider provider)
59         {
60             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
61         }
62 
IConvertible.ToInt16(IFormatProvider provider)63         short IConvertible.ToInt16(IFormatProvider provider)
64         {
65             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
66         }
67 
IConvertible.ToUInt16(IFormatProvider provider)68         ushort IConvertible.ToUInt16(IFormatProvider provider)
69         {
70             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
71         }
72 
IConvertible.ToInt32(IFormatProvider provider)73         int IConvertible.ToInt32(IFormatProvider provider)
74         {
75             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
76         }
77 
IConvertible.ToUInt32(IFormatProvider provider)78         uint IConvertible.ToUInt32(IFormatProvider provider)
79         {
80             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
81         }
82 
IConvertible.ToInt64(IFormatProvider provider)83         long IConvertible.ToInt64(IFormatProvider provider)
84         {
85             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
86         }
87 
IConvertible.ToUInt64(IFormatProvider provider)88         ulong IConvertible.ToUInt64(IFormatProvider provider)
89         {
90             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
91         }
92 
IConvertible.ToSingle(IFormatProvider provider)93         float IConvertible.ToSingle(IFormatProvider provider)
94         {
95             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
96         }
97 
IConvertible.ToDouble(IFormatProvider provider)98         double IConvertible.ToDouble(IFormatProvider provider)
99         {
100             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
101         }
102 
IConvertible.ToDecimal(IFormatProvider provider)103         decimal IConvertible.ToDecimal(IFormatProvider provider)
104         {
105             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
106         }
107 
IConvertible.ToDateTime(IFormatProvider provider)108         DateTime IConvertible.ToDateTime(IFormatProvider provider)
109         {
110             throw new InvalidCastException(SR.InvalidCast_FromDBNull);
111         }
112 
IConvertible.ToType(Type type, IFormatProvider provider)113         object IConvertible.ToType(Type type, IFormatProvider provider)
114         {
115             return Convert.DefaultToType((IConvertible)this, type, provider);
116         }
117     }
118 }
119 
120