/// <summary>
        /// Constructor
        /// </summary>
        public TypeHandlerFactory()
        {
            ITypeHandler handler = null;

            handler = new DBNullTypeHandler();
            this.Register(typeof(DBNull), handler);

            handler = new BooleanTypeHandler();
            this.Register(typeof(bool), handler); // key= "System.Boolean"

            handler = new ByteTypeHandler();
            this.Register(typeof(Byte), handler);

            handler = new CharTypeHandler();
            this.Register(typeof(Char), handler);

            handler = new DateTimeTypeHandler();
            this.Register(typeof(DateTime), handler);

            handler = new DecimalTypeHandler();
            this.Register(typeof(Decimal), handler);

            handler = new DoubleTypeHandler();
            this.Register(typeof(Double), handler);

            handler = new Int16TypeHandler();
            this.Register(typeof(Int16), handler);

            handler = new Int32TypeHandler();
            this.Register(typeof(Int32), handler);

            handler = new Int64TypeHandler();
            this.Register(typeof(Int64), handler);

            handler = new SingleTypeHandler();
            this.Register(typeof(Single), handler);

            handler = new StringTypeHandler();
            this.Register(typeof(String), handler);

            handler = new GuidTypeHandler();
            this.Register(typeof(Guid), handler);

            handler = new TimeSpanTypeHandler();
            this.Register(typeof(TimeSpan), handler);

            handler = new ByteArrayTypeHandler();
            this.Register(typeof(Byte[]), handler);

            handler = new ObjectTypeHandler();
            this.Register(typeof(object), handler);

            handler = new EnumTypeHandler();
            this.Register(typeof(System.Enum), handler);

            handler = new UInt16TypeHandler();
            this.Register(typeof(UInt16), handler);

            handler = new UInt32TypeHandler();
            this.Register(typeof(UInt32), handler);

            handler = new UInt64TypeHandler();
            this.Register(typeof(UInt64), handler);

            handler = new SByteTypeHandler();
            this.Register(typeof(SByte), handler);

            handler = new NullableBooleanTypeHandler();
            this.Register(typeof(bool?), handler);

            handler = new NullableByteTypeHandler();
            this.Register(typeof(byte?), handler);

            handler = new NullableCharTypeHandler();
            this.Register(typeof(char?), handler);

            handler = new NullableDateTimeTypeHandler();
            this.Register(typeof(DateTime?), handler);

            handler = new NullableDecimalTypeHandler();
            this.Register(typeof(decimal?), handler);

            handler = new NullableDoubleTypeHandler();
            this.Register(typeof(double?), handler);

            handler = new NullableGuidTypeHandler();
            this.Register(typeof(Guid?), handler);

            handler = new NullableInt16TypeHandler();
            this.Register(typeof(Int16?), handler);

            handler = new NullableInt32TypeHandler();
            this.Register(typeof(Int32?), handler);

            handler = new NullableInt64TypeHandler();
            this.Register(typeof(Int64?), handler);

            handler = new NullableSingleTypeHandler();
            this.Register(typeof(Single?), handler);

            handler = new NullableUInt16TypeHandler();
            this.Register(typeof(UInt16?), handler);

            handler = new NullableUInt32TypeHandler();
            this.Register(typeof(UInt32?), handler);

            handler = new NullableUInt64TypeHandler();
            this.Register(typeof(UInt64?), handler);

            handler = new NullableSByteTypeHandler();
            this.Register(typeof(SByte?), handler);

            handler = new NullableTimeSpanTypeHandler();
            this.Register(typeof(TimeSpan?), handler);

            _unknownTypeHandler = new UnknownTypeHandler(this);
        }