static public string Dissolve(object data) { string returnData = null; if (data is String) { returnData = (string)data; } else if ((data is SByte) || (data is Int16) || (data is Int32) || (data is Int64) || (data is Byte) || (data is UInt16) || (data is UInt32) || (data is UInt64) || (data is Decimal) || (data is Char) || (data is Guid) || (data is Single) || (data is Double) || (data is Boolean)) { returnData = data.ToString(); } else if (data is DateTime) { DateTime date = (DateTime)data; returnData = date.ToUniversalTime().ToString(); } else if (data is TimeSpan) { TimeSpan timespan = (TimeSpan)data; returnData = timespan.ToString(); } else { LoadCustomSerializers(); ITypeSerializer cts = _serializers[data.GetType()] as ITypeSerializer; if (cts != null) { returnData = cts.Dissolve(data); } else { bool found = false; foreach (ITypeSerializer ts in _serializers.Values) { if (ts.DataType.IsInstanceOfType(data)) { returnData = ts.Dissolve(data); found = true; } } if (!found) { throw new Exception("Unserializable type: " + data.GetType().FullName); } } } return(returnData); }