/// <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)); } } } }
/// <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); } } }
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); }