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