| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Licensed to the .NET Foundation under one or more agreements.
- // The .NET Foundation licenses this file to you under the MIT license.
- // See the LICENSE file in the project root for more information.
- namespace System
- {
- // The IConvertible interface represents an object that contains a value. This
- // interface is implemented by the following types in the System namespace:
- // Boolean, Char, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64,
- // Single, Double, Decimal, DateTime, and String. The interface may
- // be implemented by other types that are to be considered values. For example,
- // a library of nullable database types could implement IConvertible.
- //
- // Note: The interface was originally proposed as IValue.
- //
- // The implementations of IConvertible provided by the System.XXX value classes
- // simply forward to the appropriate Value.ToXXX(YYY) methods (a description of
- // the Value class follows below). In cases where a Value.ToXXX(YYY) method
- // does not exist (because the particular conversion is not supported), the
- // IConvertible implementation should simply throw an InvalidCastException.
- [CLSCompliant(false)]
- public interface IConvertible
- {
- // Returns the type code of this object. An implementation of this method
- // must not return TypeCode.Empty (which represents a null reference) or
- // TypeCode.Object (which represents an object that doesn't implement the
- // IConvertible interface). An implementation of this method should return
- // TypeCode.DBNull if the value of this object is a database null. For
- // example, a nullable integer type should return TypeCode.DBNull if the
- // value of the object is the database null. Otherwise, an implementation
- // of this method should return the TypeCode that best describes the
- // internal representation of the object.
- TypeCode GetTypeCode();
- // The ToXXX methods convert the value of the underlying object to the
- // given type. If a particular conversion is not supported, the
- // implementation must throw an InvalidCastException. If the value of the
- // underlying object is not within the range of the target type, the
- // implementation must throw an OverflowException. The
- // IFormatProvider will be used to get a NumberFormatInfo or similar
- // appropriate service object, and may safely be null.
- bool ToBoolean(IFormatProvider provider);
- char ToChar(IFormatProvider provider);
- sbyte ToSByte(IFormatProvider provider);
- byte ToByte(IFormatProvider provider);
- short ToInt16(IFormatProvider provider);
- ushort ToUInt16(IFormatProvider provider);
- int ToInt32(IFormatProvider provider);
- uint ToUInt32(IFormatProvider provider);
- long ToInt64(IFormatProvider provider);
- ulong ToUInt64(IFormatProvider provider);
- float ToSingle(IFormatProvider provider);
- double ToDouble(IFormatProvider provider);
- decimal ToDecimal(IFormatProvider provider);
- DateTime ToDateTime(IFormatProvider provider);
- string ToString(IFormatProvider provider);
- object ToType(Type conversionType, IFormatProvider provider);
- }
- }
|