예제 #1
0
        /// <summary>
        /// Get the managed object representing the Variant.
        /// </summary>
        /// <returns></returns>
        public object?ToObject()
        {
            // Check the simple case upfront
            if (IsEmpty)
            {
                return(null);
            }

            switch (VariantType)
            {
            case VarEnum.VT_NULL:
                return(DBNull.Value);

            case VarEnum.VT_I1: return(AsI1);

            case VarEnum.VT_I2: return(AsI2);

            case VarEnum.VT_I4: return(AsI4);

            case VarEnum.VT_I8: return(AsI8);

            case VarEnum.VT_UI1: return(AsUi1);

            case VarEnum.VT_UI2: return(AsUi2);

            case VarEnum.VT_UI4: return(AsUi4);

            case VarEnum.VT_UI8: return(AsUi8);

            case VarEnum.VT_INT: return(AsInt);

            case VarEnum.VT_UINT: return(AsUint);

            case VarEnum.VT_BOOL: return(AsBool);

            case VarEnum.VT_ERROR: return(AsError);

            case VarEnum.VT_R4: return(AsR4);

            case VarEnum.VT_R8: return(AsR8);

            case VarEnum.VT_DECIMAL: return(AsDecimal);

            case VarEnum.VT_CY: return(AsCy);

            case VarEnum.VT_DATE: return(AsDate);

            case VarEnum.VT_BSTR: return(AsBstr);

            case VarEnum.VT_UNKNOWN: return(AsUnknown);

            case VarEnum.VT_DISPATCH: return(AsDispatch);

            default:
                unsafe
                {
                    fixed(void *pThis = &this)
                    {
                        return(Marshal.GetObjectForNativeVariant((System.IntPtr)pThis));
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Get the managed object representing the Variant.
        /// </summary>
        /// <returns></returns>
        public object ToObject()
        {
            // Check the simple case upfront
            if (IsEmpty)
            {
                return(null);
            }

            switch (VariantType)
            {
            case VarEnum.VT_NULL: return(DBNull.Value);

                #region Generated Variant ToObject

            // *** BEGIN GENERATED CODE ***
            // generated by function: gen_ToObject from: generate_comdispatch.py

            case VarEnum.VT_I1: return(AsI1);

            case VarEnum.VT_I2: return(AsI2);

            case VarEnum.VT_I4: return(AsI4);

            case VarEnum.VT_I8: return(AsI8);

            case VarEnum.VT_UI1: return(AsUi1);

            case VarEnum.VT_UI2: return(AsUi2);

            case VarEnum.VT_UI4: return(AsUi4);

            case VarEnum.VT_UI8: return(AsUi8);

            case VarEnum.VT_INT: return(AsInt);

            case VarEnum.VT_UINT: return(AsUint);

            case VarEnum.VT_BOOL: return(AsBool);

            case VarEnum.VT_ERROR: return(AsError);

            case VarEnum.VT_R4: return(AsR4);

            case VarEnum.VT_R8: return(AsR8);

            case VarEnum.VT_DECIMAL: return(AsDecimal);

            case VarEnum.VT_CY: return(AsCy);

            case VarEnum.VT_DATE: return(AsDate);

            case VarEnum.VT_BSTR: return(AsBstr);

            case VarEnum.VT_UNKNOWN: return(AsUnknown);

            case VarEnum.VT_DISPATCH: return(AsDispatch);

                // VarEnum.VT_VARIANT is handled by Marshal.GetObjectForNativeVariant below

                // *** END GENERATED CODE ***

                #endregion

            default:
                try {
                    unsafe
                    {
                        fixed(void *pThis = &this)
                        {
                            return(Marshal.GetObjectForNativeVariant((System.IntPtr)pThis));
                        }
                    }
                }
                catch (Exception ex) {
                    throw new NotImplementedException("Variant.ToObject cannot handle" + VariantType, ex);
                }
            }
        }
예제 #3
0
        public unsafe object ToObject()
        {
            object objectForNativeVariant;

            if (this.IsEmpty)
            {
                return(null);
            }
            switch (this.VariantType)
            {
            case VarEnum.VT_NULL:
                return(DBNull.Value);

            case VarEnum.VT_I2:
                return(this.AsI2);

            case VarEnum.VT_I4:
                return(this.AsI4);

            case VarEnum.VT_R4:
                return(this.AsR4);

            case VarEnum.VT_R8:
                return(this.AsR8);

            case VarEnum.VT_CY:
                return(this.AsCy);

            case VarEnum.VT_DATE:
                return(this.AsDate);

            case VarEnum.VT_BSTR:
                return(this.AsBstr);

            case VarEnum.VT_DISPATCH:
                return(this.AsDispatch);

            case VarEnum.VT_ERROR:
                return(this.AsError);

            case VarEnum.VT_BOOL:
                return(this.AsBool);

            case VarEnum.VT_UNKNOWN:
                return(this.AsUnknown);

            case VarEnum.VT_DECIMAL:
                return(this.AsDecimal);

            case VarEnum.VT_I1:
                return(this.AsI1);

            case VarEnum.VT_UI1:
                return(this.AsUi1);

            case VarEnum.VT_UI2:
                return(this.AsUi2);

            case VarEnum.VT_UI4:
                return(this.AsUi4);

            case VarEnum.VT_I8:
                return(this.AsI8);

            case VarEnum.VT_UI8:
                return(this.AsUi8);

            case VarEnum.VT_INT:
                return(this.AsInt);

            case VarEnum.VT_UINT:
                return(this.AsUint);
            }
            try
            {
                fixed(IntPtr *ptrRef = ((IntPtr *)this))
                {
                    objectForNativeVariant = Marshal.GetObjectForNativeVariant((IntPtr)ptrRef);
                }
            }
            catch (Exception exception)
            {
                throw new NotImplementedException("Variant.ToObject cannot handle" + this.VariantType, exception);
            }
            return(objectForNativeVariant);
        }