internal static extern void InitPropVariantFromDoubleVector([In, Out] double[] prgn, uint cElems, out PropVariant ppropvar);
internal static extern void InitPropVariantFromFileTimeVector([In, Out] System.Runtime.InteropServices.ComTypes.FILETIME[] prgft, uint cElems, out PropVariant ppropvar);
internal static extern void InitPropVariantFromInt32Vector([In, Out] Int32[] prgn, uint cElems, out PropVariant ppropvar);
internal static extern void InitPropVariantFromUInt64Vector([In, Out] UInt64[] prgn, uint cElems, out PropVariant ppropvar);
private void CopyData(PropVariant propVar) { this.valueType = propVar.valueType; this.valueData = propVar.valueData; this.valueDataExt = propVar.valueDataExt; }
internal static extern void InitPropVariantFromBooleanVector([In, Out] bool[] prgf, uint cElems, out PropVariant ppropvar);
internal static extern void PropVariantGetDoubleElem([In] ref PropVariant propVar, [In] uint iElem, [Out] out double pnVal);
[DllImport("Ole32.dll", PreserveSig = false)] // returns hresult internal extern static void PropVariantClear([In, Out] ref PropVariant pvar);
internal static extern void PropVariantGetInt32Elem([In] ref PropVariant propVar, [In] uint iElem, [Out] out int pnVal);
internal static extern void PropVariantGetUInt64Elem([In] ref PropVariant propVar, [In] uint iElem, [Out] out UInt64 pnVal);
internal static extern void PropVariantGetBooleanElem([In] ref PropVariant propVar, [In] uint iElem, [Out, MarshalAs(UnmanagedType.Bool)] out bool pfVal);
internal static extern int PropVariantGetElementCount([In] ref PropVariant propVar);
internal static extern uint InitPropVariantFromFileTime([In] ref System.Runtime.InteropServices.ComTypes.FILETIME pftIn, out PropVariant ppropvar);
internal static extern void InitPropVariantFromStringVector([In, Out] string[] prgsz, uint cElems, out PropVariant ppropvar);
internal static extern void PropVariantGetFileTimeElem([In] ref PropVariant propVar, [In] uint iElem, [Out, MarshalAs(UnmanagedType.Struct)] out System.Runtime.InteropServices.ComTypes.FILETIME pftVal);
/// <summary> /// Creates a PropVariant from an object /// </summary> /// <param name="value">The object containing the data.</param> /// <returns>An initialized PropVariant</returns> public static PropVariant FromObject(object value) { PropVariant propVar = new PropVariant(); if (value == null) { propVar.Clear(); return(propVar); } if (value.GetType() == typeof(string)) { //Strings require special consideration, because they cannot be empty as well if (String.IsNullOrEmpty(value as string) || String.IsNullOrEmpty((value as string).Trim())) { throw new ArgumentException("String argument cannot be null or empty."); } propVar.SetString(value as string); } else if (value.GetType() == typeof(bool?)) { propVar.SetBool((value as bool?).Value); } else if (value.GetType() == typeof(bool)) { propVar.SetBool((bool)value); } else if (value.GetType() == typeof(byte?)) { propVar.SetByte((value as byte?).Value); } else if (value.GetType() == typeof(byte)) { propVar.SetByte((byte)value); } else if (value.GetType() == typeof(sbyte?)) { propVar.SetSByte((value as sbyte?).Value); } else if (value.GetType() == typeof(sbyte)) { propVar.SetSByte((sbyte)value); } else if (value.GetType() == typeof(short?)) { propVar.SetShort((value as short?).Value); } else if (value.GetType() == typeof(short)) { propVar.SetShort((short)value); } else if (value.GetType() == typeof(ushort?)) { propVar.SetUShort((value as ushort?).Value); } else if (value.GetType() == typeof(ushort)) { propVar.SetUShort((ushort)value); } else if (value.GetType() == typeof(int?)) { propVar.SetInt((value as int?).Value); } else if (value.GetType() == typeof(int)) { propVar.SetInt((int)value); } else if (value.GetType() == typeof(uint?)) { propVar.SetUInt((value as uint?).Value); } else if (value.GetType() == typeof(uint)) { propVar.SetUInt((uint)value); } else if (value.GetType() == typeof(long?)) { propVar.SetLong((value as long?).Value); } else if (value.GetType() == typeof(long)) { propVar.SetLong((long)value); } else if (value.GetType() == typeof(ulong?)) { propVar.SetULong((value as ulong?).Value); } else if (value.GetType() == typeof(ulong)) { propVar.SetULong((ulong)value); } else if (value.GetType() == typeof(double?)) { propVar.SetDouble((value as double?).Value); } else if (value.GetType() == typeof(double)) { propVar.SetDouble((double)value); } else if (value.GetType() == typeof(decimal?)) { propVar.SetDecimal((value as decimal?).Value); } else if (value.GetType() == typeof(decimal)) { propVar.SetDecimal((decimal)value); } else if (value.GetType() == typeof(DateTime?)) { propVar.SetDateTime((value as DateTime?).Value); } else if (value.GetType() == typeof(DateTime)) { propVar.SetDateTime((DateTime)value); } else if (value.GetType() == typeof(string[])) { propVar.SetStringVector((value as string[])); } else if (value.GetType() == typeof(short[])) { propVar.SetShortVector((value as short[])); } else if (value.GetType() == typeof(ushort[])) { propVar.SetUShortVector((value as ushort[])); } else if (value.GetType() == typeof(int[])) { propVar.SetIntVector((value as int[])); } else if (value.GetType() == typeof(uint[])) { propVar.SetUIntVector((value as uint[])); } else if (value.GetType() == typeof(long[])) { propVar.SetLongVector((value as long[])); } else if (value.GetType() == typeof(ulong[])) { propVar.SetULongVector((value as ulong[])); } else if (value.GetType() == typeof(DateTime[])) { propVar.SetDateTimeVector((value as DateTime[])); } else if (value.GetType() == typeof(bool[])) { propVar.SetBoolVector((value as bool[])); } else { throw new ArgumentException("This Value type is not supported."); } return(propVar); }
internal static extern void PropVariantGetStringElem([In] ref PropVariant propVar, [In] uint iElem, [Out, MarshalAs(UnmanagedType.LPWStr)] out string ppszVal);
[DllImport("Ole32.dll", PreserveSig = false)] // returns hresult internal extern static void PropVariantCopy([Out] out PropVariant pDst, [In] ref PropVariant pSrc);
internal static extern int InitPropVariantFromPropVariantVectorElem([In] ref PropVariant propvarIn, uint iElem, [Out] out PropVariant ppropvar);