public object GetObjectToSerialize(object obj, Type targetType) { object result; if (obj is Udbus.Containers.dbus_union) { Udbus.Containers.dbus_union union = (Udbus.Containers.dbus_union)obj; DbusUnionSurrogate unionSurrogate = new DbusUnionSurrogate(); unionSurrogate.unionTypes = Udbus.Types.dbus_sig.TruncatedCopy(union.Types); switch (union.Type) { case Udbus.Types.dbus_type.DBUS_BOOLEAN: unionSurrogate.data = union.DbusBoolean; break; case Udbus.Types.dbus_type.DBUS_BYTE: unionSurrogate.data = union.DbusByte; break; case Udbus.Types.dbus_type.DBUS_OBJECTPATH: unionSurrogate.data = union.DbusObjectPath.Path; break; case Udbus.Types.dbus_type.DBUS_SIGNATURE: unionSurrogate.data = union.DbusSignature; break; case Udbus.Types.dbus_type.DBUS_STRING: unionSurrogate.data = union.DbusString; break; case Udbus.Types.dbus_type.DBUS_INT16: unionSurrogate.data = union.DbusInt16; break; case Udbus.Types.dbus_type.DBUS_UINT16: unionSurrogate.data = union.DbusUInt16; break; case Udbus.Types.dbus_type.DBUS_INT32: unionSurrogate.data = union.DbusInt32; break; case Udbus.Types.dbus_type.DBUS_UINT32: unionSurrogate.data = union.DbusUInt32; break; case Udbus.Types.dbus_type.DBUS_INT64: unionSurrogate.data = union.DbusInt64; break; case Udbus.Types.dbus_type.DBUS_UINT64: unionSurrogate.data = union.DbusUInt64; break; case Udbus.Types.dbus_type.DBUS_DOUBLE: unionSurrogate.data = union.DbusDouble; break; case Udbus.Types.dbus_type.DBUS_ARRAY: unionSurrogate.data = union.DbusObjectArray; break; case Udbus.Types.dbus_type.DBUS_STRUCT_BEGIN: unionSurrogate.data = union.DbusObjectStruct; break; case Udbus.Types.dbus_type.DBUS_VARIANT: unionSurrogate.data = union.DbusVariant; break; case Udbus.Types.dbus_type.DBUS_DICT_BEGIN: unionSurrogate.data = union.DbusDictionary; break; case Udbus.Types.dbus_type.DBUS_INVALID: break; default: throw new Exception(string.Format("Unkonwn dbus_type for surrogate: {0}", union.Type.ToString())); } result = unionSurrogate; } else { result = obj; } return(result); }
public object GetDeserializedObject(object obj, Type targetType) { object result; if (obj is DbusUnionSurrogate) { DbusUnionSurrogate unionSurrogate = (DbusUnionSurrogate)obj; Udbus.Containers.dbus_union union = new Udbus.Containers.dbus_union(); switch (unionSurrogate.unionTypes[0]) { case Udbus.Types.dbus_type.DBUS_BOOLEAN: union.DbusBoolean = (bool)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_BYTE: union.DbusByte = (byte)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_OBJECTPATH: union.DbusObjectPath = new Udbus.Types.UdbusObjectPath((string)unionSurrogate.data); break; case Udbus.Types.dbus_type.DBUS_SIGNATURE: union.DbusSignature = (Udbus.Types.dbus_sig)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_STRING: union.DbusString = (string)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_INT16: union.DbusInt16 = (Int16)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_UINT16: union.DbusUInt16 = (UInt16)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_INT32: union.DbusInt32 = (Int32)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_UINT32: union.DbusUInt32 = (UInt32)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_INT64: union.DbusInt64 = (Int64)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_UINT64: union.DbusUInt64 = (UInt64)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_DOUBLE: union.DbusDouble = (double)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_ARRAY: union.SetDbusObjectArray((object[])unionSurrogate.data, unionSurrogate.unionTypes); break; case Udbus.Types.dbus_type.DBUS_STRUCT_BEGIN: union.SetDbusObjectStruct((object[])unionSurrogate.data, unionSurrogate.unionTypes); break; case Udbus.Types.dbus_type.DBUS_VARIANT: union.DbusVariant = (Udbus.Containers.dbus_union)unionSurrogate.data; break; case Udbus.Types.dbus_type.DBUS_DICT_BEGIN: union.SetDbusDictionary((Dictionary <object, object>)unionSurrogate.data, unionSurrogate.unionTypes); break; case Udbus.Types.dbus_type.DBUS_INVALID: break; default: throw new Exception(string.Format("Unkonwn dbus_type: {0}", unionSurrogate.unionTypes.ToString())); } result = union; } else { result = obj; } return(result); }
public object GetObjectToSerialize(object obj, Type targetType) { object result; if (obj is Udbus.Containers.dbus_union) { Udbus.Containers.dbus_union union = (Udbus.Containers.dbus_union)obj; DbusUnionSurrogate unionSurrogate = new DbusUnionSurrogate(); unionSurrogate.unionTypes = Udbus.Types.dbus_sig.TruncatedCopy(union.Types); switch (union.Type) { case Udbus.Types.dbus_type.DBUS_BOOLEAN: unionSurrogate.data = union.DbusBoolean; break; case Udbus.Types.dbus_type.DBUS_BYTE: unionSurrogate.data = union.DbusByte; break; case Udbus.Types.dbus_type.DBUS_OBJECTPATH: unionSurrogate.data = union.DbusObjectPath.Path; break; case Udbus.Types.dbus_type.DBUS_SIGNATURE: unionSurrogate.data = union.DbusSignature; break; case Udbus.Types.dbus_type.DBUS_STRING: unionSurrogate.data = union.DbusString; break; case Udbus.Types.dbus_type.DBUS_INT16: unionSurrogate.data = union.DbusInt16; break; case Udbus.Types.dbus_type.DBUS_UINT16: unionSurrogate.data = union.DbusUInt16; break; case Udbus.Types.dbus_type.DBUS_INT32: unionSurrogate.data = union.DbusInt32; break; case Udbus.Types.dbus_type.DBUS_UINT32: unionSurrogate.data = union.DbusUInt32; break; case Udbus.Types.dbus_type.DBUS_INT64: unionSurrogate.data = union.DbusInt64; break; case Udbus.Types.dbus_type.DBUS_UINT64: unionSurrogate.data = union.DbusUInt64; break; case Udbus.Types.dbus_type.DBUS_DOUBLE: unionSurrogate.data = union.DbusDouble; break; case Udbus.Types.dbus_type.DBUS_ARRAY: unionSurrogate.data = union.DbusObjectArray; break; case Udbus.Types.dbus_type.DBUS_STRUCT_BEGIN: unionSurrogate.data = union.DbusObjectStruct; break; case Udbus.Types.dbus_type.DBUS_VARIANT: unionSurrogate.data = union.DbusVariant; break; case Udbus.Types.dbus_type.DBUS_DICT_BEGIN: unionSurrogate.data = union.DbusDictionary; break; case Udbus.Types.dbus_type.DBUS_INVALID: break; default: throw new Exception(string.Format("Unkonwn dbus_type for surrogate: {0}", union.Type.ToString())); } result = unionSurrogate; } else { result = obj; } return result; }