Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <param name="pathSpec"></param>
        /// <param name="serializationFormatterEnum"></param>
        public static void SerializeToFile <T>(T obj, string pathSpec, SerializationFormatterEnum serializationFormatterEnum)
        {
            try
            {
                switch (serializationFormatterEnum)
                {
                case (SerializationFormatterEnum.Binary):

                    /*
                     * using (FileStream fs = File.Open("MyFile.txt", FileMode.Open, FileAccess.Read, FileShare.None))
                     * {
                     *   // use fs
                     * }
                     */

                    using (var fs = new FileStream(pathSpec, FileMode.Create,
                                                   FileAccess.Write, FileShare.Write))
                        (new BinaryFormatter()).Serialize(fs, obj);

                    break;

                case (SerializationFormatterEnum.Xml):
                    var        serializer = new XmlSerializer(typeof(T));
                    TextWriter textWriter = new StreamWriter(pathSpec);
                    serializer.Serialize(textWriter, obj);
                    textWriter.Close();
                    break;

                default:
                    throw new Exception("Invalid Formatter option");
                }
            }
            catch (SerializationException sX)
            {
                var errMsg = $"Unable to serialize {obj} into file {pathSpec}";
                throw new Exception(errMsg, sX);
            }
            catch (Exception ex)
            {
                var errMsg = $"Unable to serialize {obj} into file {pathSpec}. Detail: {ex.Message}";
                throw new Exception(errMsg, ex);
            }
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="pathSpec"></param>
        /// <param name="serializationFormatterEnum"></param>
        /// <returns></returns>
        public static T DeserializeFromFile <T>(string pathSpec, SerializationFormatterEnum serializationFormatterEnum) where T : class
        {
            try
            {
                switch (serializationFormatterEnum)
                {
                case (SerializationFormatterEnum.Binary):
                    using (var strm = new FileStream(pathSpec,
                                                     FileMode.Open, FileAccess.Read))
                    {
                        IFormatter fmt = new BinaryFormatter();
                        var        o   = fmt.Deserialize(strm);
                        if (!(o is T))
                        {
                            throw new ArgumentException("Bad Data File");
                        }
                        return(o as T);
                    }

                case (SerializationFormatterEnum.Xml):

                    TextReader rdr        = new StreamReader(pathSpec);
                    var        serializer = new XmlSerializer(typeof(T));

                    var obj = (T)serializer.Deserialize(rdr);
                    rdr.Close();

                    return(obj);

                default:
                    throw new Exception("Invalid Formatter option");
                }
            }
            catch (SerializationException sX)
            {
                var errMsg = $"Unable to deserialize {typeof (T)} from file {pathSpec}";
                throw new Exception(errMsg, sX);
            }
        }