コード例 #1
0
ファイル: Utilities.cs プロジェクト: k-rus/ScSqlTestFramework
        // From class Starcounter.Db. Added CultureInfo.InvariantCulture and NumberFormatInfo.InvariantInfo.
        internal static String CreateObjectString(ITypeBinding typeBind, IObjectView currentObj)
        {
            IPropertyBinding propBind = null;
            String result = FieldSeparator;
            for (Int32 i = 0; i < typeBind.PropertyCount; i++)
            {
                propBind = typeBind.GetPropertyBinding(i);
                switch (propBind.TypeCode)
                {
                    case DbTypeCode.Binary:
                        Nullable<Binary> binValue = currentObj.GetBinary(i);
                        if (binValue == null)
                            result += Db.NullString;
                        else
                            result += BinaryToHex(binValue.Value);
                        break;

                    case DbTypeCode.Boolean:
                        Nullable<Boolean> blnValue = currentObj.GetBoolean(i);
                        if (blnValue == null)
                            result += Db.NullString;
                        else
                            result += blnValue.Value.ToString();
                        break;

                    case DbTypeCode.Byte:
                        Nullable<Byte> byteValue = currentObj.GetByte(i);
                        if (byteValue == null)
                            result += Db.NullString;
                        else
                            result += byteValue.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.DateTime:
                        Nullable<DateTime> dtmValue = currentObj.GetDateTime(i);
                        if (dtmValue == null)
                            result += Db.NullString;
                        else
                            result += dtmValue.Value.ToString("u", DateTimeFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Decimal:
                        Nullable<Decimal> decValue = currentObj.GetDecimal(i);
                        if (decValue == null)
                            result += Db.NullString;
                        else
                            result += decValue.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Double:
                        Nullable<Double> dblValue = currentObj.GetDouble(i);
                        if (dblValue == null)
                            result += Db.NullString;
                        else
                            result += dblValue.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Int16:
                        Nullable<Int16> int16Value = currentObj.GetInt16(i);
                        if (int16Value == null)
                            result += Db.NullString;
                        else
                            result += int16Value.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Int32:
                        Nullable<Int32> int32Value = currentObj.GetInt32(i);
                        if (int32Value == null)
                            result += Db.NullString;
                        else
                            result += int32Value.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Int64:
                        Nullable<Int64> int64Value = currentObj.GetInt64(i);
                        if (int64Value == null)
                            result += Db.NullString;
                        else
                            result += int64Value.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Object:
                        IObjectView objValue = currentObj.GetObject(i);
                        if (objValue == null)
                            result += Db.NullString;
                        else
                        {
                            if (objValue is IObjectProxy)
                                //result += DbHelper.GetObjectID(objValue as Entity).ToString();
                                result += Utilities.GetObjectIdString(objValue);
                            else
                                result += objValue.ToString();
                        }
                        break;

                    case DbTypeCode.SByte:
                        Nullable<SByte> sbyteValue = currentObj.GetSByte(i);
                        if (sbyteValue == null)
                            result += Db.NullString;
                        else
                            result += sbyteValue.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.Single:
                        Nullable<Single> sngValue = currentObj.GetSingle(i);
                        if (sngValue == null)
                            result += Db.NullString;
                        else
                            result += sngValue.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.String:
                        String strValue = currentObj.GetString(i);
                        if (strValue == null)
                            result += Db.NullString;
                        else
                            result += strValue;
                        break;

                    case DbTypeCode.UInt16:
                        Nullable<UInt16> uint16Value = currentObj.GetUInt16(i);
                        if (uint16Value == null)
                            result += Db.NullString;
                        else
                            result += uint16Value.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.UInt32:
                        Nullable<UInt32> uint32Value = currentObj.GetUInt32(i);
                        if (uint32Value == null)
                            result += Db.NullString;
                        else
                            result += uint32Value.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    case DbTypeCode.UInt64:
                        Nullable<UInt64> uint64Value = currentObj.GetUInt64(i);
                        if (uint64Value == null)
                            result += Db.NullString.ToString(NumberFormatInfo.InvariantInfo);
                        else
                            result += uint64Value.Value.ToString(NumberFormatInfo.InvariantInfo);
                        break;

                    default:
                        throw new Exception("Incorrect TypeCode: " + propBind.TypeCode);
                }
                result += FieldSeparator;
            }
            return result;
        }