/// <summary> /// Create a new instance of the IFormatter class. /// </summary> /// <param name="method"></param> /// <returns></returns> private static IFormatter CreateFormatter(SerializeMethods method) { switch (method) { case SerializeMethods.Binary: return(new BinaryFormatter()); case SerializeMethods.Soap: return(new SoapFormatter()); //// TODO: this stop working on clr 4.0 //case SerializeMethods.NetDataContract: // return new NetDataContractSerializer(); case SerializeMethods.XmlDataContract: throw new NotImplementedException("XmlDataContract not available"); //return new XmlDataContractSerializer(); case SerializeMethods.Json: throw new NotImplementedException("json not available"); //return new XmlObjectSerializer(); //return new DataContractJsonSerializer(); default: throw new ArgumentOutOfRangeException("method=" + method); } }
public static void Main(string[] args) { /*var myObj = new myclass[] * { * null, * new myclass() * { * blah = 93, * hello = "lalalal", * dec = null, * obj = new myclass() * { * hello = "hello", * blah = 39, * dec = new decimal[] * { * 3.4M, 0.0000001M * }, * obj = null * } * } * }; * * var mystep = SerializeMethods.Serialize(myObj); * foreach (var s in mystep) Console.WriteLine(s); * Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(DeserializeMethods.Deserialize(mystep))); * Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(myObj)); * }*/ byte[] serialized = SerializeMethods.Serialize(new { someString = "Hi NSA!", someInteger = 5, someDouble = 2.8, someArrayOfInts = new int[] { 5, 2, 6, 8, 9 }, someArrayOfDoubles = new double[] { 2.5, 8.9, 2.7 } }); dynamic obj = DeserializeMethods.Deserialize(serialized); object[] egers = obj.someArrayOfDoubles; }
/// <summary> /// Deserialize the string value /// </summary> /// <param name="value"></param> /// <param name="method"></param> /// <returns></returns> public static T Deserialize <T>(string value, SerializeMethods method) { if (string.IsNullOrEmpty(value)) { return(default(T)); } if (method == SerializeMethods.Xml) { return(XmlDeserialize <T>(value)); } byte[] input = Encoding.ASCII.GetBytes(value); return(Deserialize <T>(input, method)); }
/// <summary> /// Deserialize the byte array value. /// </summary> /// <param name="value"></param> /// <param name="method"></param> /// <returns></returns> public static T Deserialize <T>(byte[] value, SerializeMethods method) { if (value == null || value.Length == 0) { return(default(T)); } if (method == SerializeMethods.Xml) { return(XmlDeserialize <T>(value)); } using (MemoryStream stream = new MemoryStream(value)) { stream.Seek(0, SeekOrigin.Begin); IFormatter formatter = CreateFormatter(method); return((T)formatter.Deserialize(stream)); } }
/// <summary> /// Serialize an object using the specified formatter. /// </summary> /// <param name="theObject"></param> /// <param name="method"></param> /// <returns></returns> public static string Serialize(object theObject, SerializeMethods method) { if (theObject == null) { return(string.Empty); } if (method == SerializeMethods.Xml) { return(XmlSerialize(theObject)); } using (MemoryStream stream = new MemoryStream()) { IFormatter formatter = CreateFormatter(method); formatter.Serialize(stream, theObject); byte[] results = stream.ToArray(); return(Encoding.ASCII.GetString(results)); } }
public SerializeMethod(Serialize Cdo, SerializeMethods Method, Serialize_Parameters Parameters) { this.Cdo = Cdo; this.ServiceMethod = Method; this.Parameters = Parameters; }