System.Data.Common.DataStorage.CreateStorage C# (CSharp) Méthode

CreateStorage() public static méthode

public static CreateStorage ( DataColumn column, Type dataType, StorageType typeCode ) : DataStorage
column DataColumn
dataType System.Type
typeCode StorageType
Résultat DataStorage
        public static DataStorage CreateStorage(DataColumn column, Type dataType, StorageType typeCode)
        {
            Debug.Assert(typeCode == GetStorageType(dataType), "Incorrect storage type specified");
            if ((StorageType.Empty == typeCode) && (null != dataType))
            {
                if (typeof(INullable).IsAssignableFrom(dataType))
                { // Udt, OracleTypes
                    return new SqlUdtStorage(column, dataType);
                }
                else
                {
                    return new ObjectStorage(column, dataType); // non-nullable non-primitives
                }
            }

            switch (typeCode)
            {
                case StorageType.Empty: throw ExceptionBuilder.InvalidStorageType(TypeCode.Empty);
                case StorageType.DBNull: throw ExceptionBuilder.InvalidStorageType((TypeCode)2); // TypeCode.DBNull);
                case StorageType.Object: return new ObjectStorage(column, dataType);
                case StorageType.Boolean: return new BooleanStorage(column);
                case StorageType.Char: return new CharStorage(column);
                case StorageType.SByte: return new SByteStorage(column);
                case StorageType.Byte: return new ByteStorage(column);
                case StorageType.Int16: return new Int16Storage(column);
                case StorageType.UInt16: return new UInt16Storage(column);
                case StorageType.Int32: return new Int32Storage(column);
                case StorageType.UInt32: return new UInt32Storage(column);
                case StorageType.Int64: return new Int64Storage(column);
                case StorageType.UInt64: return new UInt64Storage(column);
                case StorageType.Single: return new SingleStorage(column);
                case StorageType.Double: return new DoubleStorage(column);
                case StorageType.Decimal: return new DecimalStorage(column);
                case StorageType.DateTime: return new DateTimeStorage(column);
                case StorageType.TimeSpan: return new TimeSpanStorage(column);
                case StorageType.String: return new StringStorage(column);
                case StorageType.Guid: return new ObjectStorage(column, dataType);

                case StorageType.ByteArray: return new ObjectStorage(column, dataType);
                case StorageType.CharArray: return new ObjectStorage(column, dataType);
                case StorageType.Type: return new ObjectStorage(column, dataType);
                case StorageType.DateTimeOffset: return new DateTimeOffsetStorage(column);
                case StorageType.BigInteger: return new BigIntegerStorage(column);
                case StorageType.Uri: return new ObjectStorage(column, dataType);

                case StorageType.SqlBinary: return new SqlBinaryStorage(column);
                case StorageType.SqlBoolean: return new SqlBooleanStorage(column);
                case StorageType.SqlByte: return new SqlByteStorage(column);
                case StorageType.SqlBytes: return new SqlBytesStorage(column);
                case StorageType.SqlChars: return new SqlCharsStorage(column);
                case StorageType.SqlDateTime: return new SqlDateTimeStorage(column);
                case StorageType.SqlDecimal: return new SqlDecimalStorage(column);
                case StorageType.SqlDouble: return new SqlDoubleStorage(column);
                case StorageType.SqlGuid: return new SqlGuidStorage(column);
                case StorageType.SqlInt16: return new SqlInt16Storage(column);
                case StorageType.SqlInt32: return new SqlInt32Storage(column);
                case StorageType.SqlInt64: return new SqlInt64Storage(column);
                case StorageType.SqlMoney: return new SqlMoneyStorage(column);
                case StorageType.SqlSingle: return new SqlSingleStorage(column);
                case StorageType.SqlString: return new SqlStringStorage(column);

                default:
                    Debug.Assert(false, "shouldn't be here");
                    goto case StorageType.Object;
            }
        }