/// <summary> /// CONVERTING FROM byte[] to the generic type /// </summary> /// <typeparam name="TData"></typeparam> /// <param name="dt"></param> /// <returns></returns> public static TData ConvertBack <TData>(byte[] dt) { if (dt == null) { return(default(TData)); } Type td = typeof(TData); Func <byte[], object> f = null; if (dcb.TryGetValue(td, out f)) { return((TData)f(dt)); } if (td.Name.Equals("DbMJSON`1") || td.Name.Equals("DbCustomSerializer`1") || td.Name.Equals("DbXML`1")) { object o = Activator.CreateInstance(td); ((IDBConvertable)o).SetBytes(dt); return((TData)o); } if (td == TYPE_OBJECT) { throw DBriizeException.Throw(DBriizeException.eDBriizeExceptions.UNSUPPORTED_DATATYPE, td.ToString(), null); } if (td.GetTypeInfo().IsEnum) { var enumtype = Enum.GetUnderlyingType(td); if (dcbe.TryGetValue(enumtype, out f)) { return((TData)f(dt)); } throw DBriizeException.Throw(DBriizeException.eDBriizeExceptions.UNSUPPORTED_DATATYPE, td.ToString(), null); } if (CustomSerializator.ByteArrayDeSerializator != null) { return((TData)CustomSerializator.ByteArrayDeSerializator(dt, td)); } throw DBriizeException.Throw(DBriizeException.eDBriizeExceptions.UNSUPPORTED_DATATYPE, td.ToString(), null); }
/// <summary> /// CONVERTING FROM byte[] to the generic type /// </summary> /// <typeparam name="TData"></typeparam> /// <param name="dt"></param> /// <returns></returns> public static TData ConvertBack <TData>(byte[] dt) { //OPT all to switch case if (dt == null) { return(default(TData)); } Type td = typeof(TData); if (td == TYPE_BYTE_ARRAY) { return((TData)((object)dt)); } else if (td == TYPE_ULONG) { return((TData)((object)dt.To_UInt64_BigEndian())); } else if (td == TYPE_ULONG_NULL) { return((TData)((object)dt.To_UInt64_BigEndian_NULL())); } else if (td == TYPE_DATETIME) { return((TData)((object)dt.To_DateTime())); } else if (td == TYPE_DATETIME_NULL) { return((TData)((object)dt.To_DateTime_NULL())); } else if (td == TYPE_STRING) { return((TData)((object)(new DbUTF8(dt)).Get)); } else if (td.Name.Equals("DbMJSON`1") || td.Name.Equals("DbCustomSerializer`1") || td.Name.Equals("DbXML`1")) { object o = Activator.CreateInstance(td); ((IDBConvertable)o).SetBytes(dt); return((TData)o); } else if (td == TYPE_UINT) { return((TData)((object)dt.To_UInt32_BigEndian())); } else if (td == TYPE_UINT_NULL) { return((TData)((object)dt.To_UInt32_BigEndian_NULL())); } else if (td == TYPE_DECIMAL) { return((TData)((object)(dt.To_Decimal_BigEndian()))); } else if (td == TYPE_DECIMAL_NULL) { return((TData)((object)(dt.To_Decimal_BigEndian_NULL()))); } else if (td == TYPE_INT) { return((TData)((object)dt.To_Int32_BigEndian())); } else if (td == TYPE_INT_NULL) { return((TData)((object)dt.To_Int32_BigEndian_NULL())); } else if (td == TYPE_DOUBLE) { return((TData)((object)(dt.To_Double_BigEndian()))); } else if (td == TYPE_DOUBLE_NULL) { return((TData)((object)(dt.To_Double_BigEndian_NULL()))); } else if (td == TYPE_FLOAT) { return((TData)((object)(dt.To_Float_BigEndian()))); } else if (td == TYPE_FLOAT_NULL) { return((TData)((object)(dt.To_Float_BigEndian_NULL()))); } else if (td == TYPE_LONG) { return((TData)((object)dt.To_Int64_BigEndian())); } else if (td == TYPE_LONG_NULL) { return((TData)((object)dt.To_Int64_BigEndian_NULL())); } else if (td == TYPE_SHORT) { return((TData)((object)dt.To_Int16_BigEndian())); } else if (td == TYPE_SHORT_NULL) { return((TData)((object)dt.To_Int16_BigEndian_NULL())); } else if (td == TYPE_USHORT) { return((TData)((object)dt.To_UInt16_BigEndian())); } else if (td == TYPE_USHORT_NULL) { return((TData)((object)dt.To_UInt16_BigEndian_NULL())); } else if (td == TYPE_DB_ASCII) { //checked return((TData)((object)new DbAscii(dt))); } else if (td == TYPE_DB_UNICODE) { //checked return((TData)((object)new DbUnicode(dt))); } else if (td == TYPE_DB_UTF8) { //checked return((TData)((object)new DbUTF8(dt))); } else if (td == TYPE_BYTE) { return((TData)((object)dt.To_Byte())); } else if (td == TYPE_BYTE_NULL) { return((TData)((object)dt.To_Byte_NULL())); } else if (td == TYPE_SBYTE) { return((TData)((object)dt.To_SByte())); } else if (td == TYPE_SBYTE_NULL) { return((TData)((object)dt.To_SByte_NULL())); } else if (td == TYPE_BOOL) { return((TData)((object)dt.To_Bool())); } else if (td == TYPE_BOOL_NULL) { return((TData)((object)dt.To_Bool_NULL())); } else if (td == TYPE_CHAR) { return((TData)((object)dt.To_Char())); } else if (td == TYPE_CHAR_NULL) { return((TData)((object)dt.To_Char_NULL())); } else if (td == TYPE_GUID) { return((TData)((object)new Guid(dt))); } else if (td == TYPE_OBJECT) { throw DBreezeException.Throw(DBreezeException.eDBreezeExceptions.UNSUPPORTED_DATATYPE, td.ToString(), null); } else if (td.GetTypeInfo().IsEnum) { var enumtype = Enum.GetUnderlyingType(td); if (enumtype == TYPE_INT) { return((TData)((object)dt.To_Int32_BigEndian())); } else if (enumtype == TYPE_LONG) { return((TData)((object)dt.To_Int64_BigEndian())); } else if (enumtype == TYPE_UINT) { return((TData)((object)dt.To_UInt32_BigEndian())); } else if (enumtype == TYPE_ULONG) { return((TData)((object)dt.To_UInt64_BigEndian())); } else if (enumtype == TYPE_USHORT) { return((TData)((object)dt.To_UInt16_BigEndian())); } else if (enumtype == TYPE_SHORT) { return((TData)((object)dt.To_Int16_BigEndian())); } else if (enumtype == TYPE_BYTE) { return((TData)((object)dt.To_Byte())); } else if (enumtype == TYPE_SBYTE) { return((TData)((object)dt.To_SByte())); } else { throw DBreezeException.Throw(DBreezeException.eDBreezeExceptions.UNSUPPORTED_DATATYPE, td.ToString(), null); } } else { //Trying byte deserialization for unknown object, in case if byte serializer is set if (CustomSerializator.ByteArrayDeSerializator != null) { return((TData)CustomSerializator.ByteArrayDeSerializator(dt, td)); } throw DBreezeException.Throw(DBreezeException.eDBreezeExceptions.UNSUPPORTED_DATATYPE, td.ToString(), null); } //return default(TData); }