示例#1
0
        internal object Value()
        {
            object obj2 = this._value;

            if (obj2 != null)
            {
                return(obj2);
            }
            switch (this.StatusValue())
            {
            case DBStatus.S_OK:
            {
                short dbType = this.DbType;
                if (dbType > 0x40)
                {
                    switch (dbType)
                    {
                    case 0x80:
                        obj2 = this.Value_BYTES();
                        goto Label_0381;

                    case 130:
                        obj2 = this.Value_WSTR();
                        goto Label_0381;

                    case 0x83:
                        obj2 = this.Value_NUMERIC();
                        goto Label_0381;

                    case 0x85:
                        obj2 = this.Value_DBDATE();
                        goto Label_0381;

                    case 0x86:
                        obj2 = this.Value_DBTIME();
                        goto Label_0381;

                    case 0x87:
                        obj2 = this.Value_DBTIMESTAMP();
                        goto Label_0381;

                    case 0x88:
                        obj2 = this.Value_HCHAPTER();
                        goto Label_0381;

                    case 0x8a:
                        obj2 = this.Value_VARIANT();
                        goto Label_0381;

                    case 0x48:
                        obj2 = this.Value_GUID();
                        goto Label_0381;

                    case 0x4080:
                        obj2 = this.Value_ByRefBYTES();
                        goto Label_0381;

                    case 0x4082:
                        obj2 = this.Value_ByRefWSTR();
                        goto Label_0381;
                    }
                    break;
                }
                switch (dbType)
                {
                case 0:
                case 1:
                    obj2 = DBNull.Value;
                    goto Label_0381;

                case 2:
                    obj2 = this.Value_I2();
                    goto Label_0381;

                case 3:
                    obj2 = this.Value_I4();
                    goto Label_0381;

                case 4:
                    obj2 = this.Value_R4();
                    goto Label_0381;

                case 5:
                    obj2 = this.Value_R8();
                    goto Label_0381;

                case 6:
                    obj2 = this.Value_CY();
                    goto Label_0381;

                case 7:
                    obj2 = this.Value_DATE();
                    goto Label_0381;

                case 8:
                    obj2 = this.Value_BSTR();
                    goto Label_0381;

                case 9:
                    obj2 = this.Value_IDISPATCH();
                    goto Label_0381;

                case 10:
                    obj2 = this.Value_ERROR();
                    goto Label_0381;

                case 11:
                    obj2 = this.Value_BOOL();
                    goto Label_0381;

                case 12:
                    obj2 = this.Value_VARIANT();
                    goto Label_0381;

                case 13:
                    obj2 = this.Value_IUNKNOWN();
                    goto Label_0381;

                case 14:
                    obj2 = this.Value_DECIMAL();
                    goto Label_0381;

                case 0x10:
                    obj2 = this.Value_I1();
                    goto Label_0381;

                case 0x11:
                    obj2 = this.Value_UI1();
                    goto Label_0381;

                case 0x12:
                    obj2 = this.Value_UI2();
                    goto Label_0381;

                case 0x13:
                    obj2 = this.Value_UI4();
                    goto Label_0381;

                case 20:
                    obj2 = this.Value_I8();
                    goto Label_0381;

                case 0x15:
                    obj2 = this.Value_UI8();
                    goto Label_0381;

                case 0x40:
                    obj2 = this.Value_FILETIME();
                    goto Label_0381;
                }
                break;
            }

            case DBStatus.S_ISNULL:
            case DBStatus.S_DEFAULT:
                obj2 = DBNull.Value;
                goto Label_0381;

            case DBStatus.S_TRUNCATED:
                switch (this.DbType)
                {
                case 0x80:
                    obj2 = this.Value_BYTES();
                    goto Label_0381;

                case 130:
                    obj2 = this.Value_WSTR();
                    goto Label_0381;

                case 0x4080:
                    obj2 = this.Value_ByRefBYTES();
                    goto Label_0381;

                case 0x4082:
                    obj2 = this.Value_ByRefWSTR();
                    goto Label_0381;
                }
                throw ODB.GVtUnknown(this.DbType);

            default:
                throw this.CheckTypeValueStatusValue();
            }
            throw ODB.GVtUnknown(this.DbType);
Label_0381:
            this._value = obj2;
            return(obj2);
        }