using System; using System.Collections.Generic; using System.Text; using System.Runtime.Serialization; using System.Xml.Serialization; using System.IO; namespace MT.Platform.Common { /// /// Supporting functionality around notifications /// public static class NotificationHelper { /// /// Serialize notification object into a string. /// /// /// public static string Serialize(Notification notification) { Validate.IsNotNull(notification, "must pass a notification"); XmlSerializer serializer = new XmlSerializer(typeof(Notification)); using (MemoryStream ms = new MemoryStream()) { serializer.Serialize(ms, notification); // convert to string return Encoding.UTF8.GetString(ms.ToArray()); } } /// /// Deserialize string into a notification object. /// /// /// public static Notification Deserialize(string data) { Validate.IsTrue(!string.IsNullOrEmpty(data), "must pass a notification data"); // use .NET 3.0 (WCF) serializer XmlSerializer serializer = new XmlSerializer(typeof(Notification)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data))) { Notification notification = (Notification)serializer.Deserialize(ms); return notification; } } } }