/// <summary> /// Serializes obj to byte[]. Passing Type can be used to avoid prefixing type to beginning of data. Important to match type parameter on deserialization. /// </summary> /// <param name="type"></param> /// <param name="obj"></param> /// <returns></returns> public byte[] FromObject(object obj, Type type = null, bool prefixTypeData = true) { if (obj == null) { throw new ArgumentNullException("obj"); } if (type == null) { type = typeof(object); } DataWriter writer = GetDataWriter(); writer.Reset(); if (prefixTypeData) { type = obj.GetType(); //Has to match because whatever we prefix we will try to deserialize //TODO: Double check TypeCache typeCache = GetTypeCache(type); WriteType(type, obj, writer, typeCache.IsGeneric, true); Serialize(type, obj, writer, true, true); } else { Serialize(type, obj, writer, false, true); } return(writer.CopyBytes()); }
/// <summary> /// Serializes obj to byte[]. Does not append type to beginning of data. /// </summary> /// <param name="type"></param> /// <param name="obj"></param> /// <returns></returns> public byte[] FromObject(Type type, object obj) { if (obj == null) { throw new ArgumentNullException("obj"); } if (type == null) { throw new ArgumentNullException("type"); } DataWriter writer = GetDataWriter(); writer.Reset(); Serialize(obj, writer); return(writer.CopyBytes()); }
/// <summary> /// Serializes obj to byte[]. Appends type to beginning of data. /// </summary> /// <param name="obj"></param> /// <returns>Serialized Data</returns> public byte[] FromObject(object obj) { if (obj == null) { throw new ArgumentNullException("obj"); } DataWriter writer = GetDataWriter(); writer.Reset(); Type type = obj.GetType(); TypeCache typeCache = GetTypeCache(type); WriteType(type, obj, writer, typeCache.IsGeneric, true); Serialize(type, obj, writer, typeCache, true, true); return(_writer.CopyBytes()); }