예제 #1
0
        /// <summary>
        /// Initialize an object from a stream, then returns a snapshot memento of it
        /// </summary>
        /// <param name="self"></param>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static IMemento GetMemento(this ICanRead self, Stream stream)
        {
            IMemento memento = new StreamMemento(stream, new FormatterStrategy());

            memento.ReadFrom(self);
            return(memento);
        }
예제 #2
0
        /// <summary>
        /// Restores an object from a byte array memento
        /// </summary>
        /// <param name="self"></param>
        /// <param name="byteArray"></param>
        public static void ReadFrom(this ICanRead self, byte[] byteArray)
        {
            var stream  = new MemoryStream();
            var memento = new StreamMemento(stream, new FormatterStrategy());

            stream.Write(byteArray, 0, byteArray.Length);
            stream.Position = 0;
            self.ReadFrom(memento);
        }
예제 #3
0
        /// <summary>
        /// Returns a snapshot memento of an object, into a byte array
        /// </summary>
        /// <param name="self"></param>
        /// <returns></returns>
        public static byte[] AsByteArray(this IAmReadable self)
        {
            var      stream  = new MemoryStream();
            IMemento memento = new StreamMemento(stream, new FormatterStrategy());

            memento.ReadFrom(self);
            stream.Position = 0;
            return(stream.ToArray());
        }
예제 #4
0
        /// <summary>
        /// Save an object to a stream
        /// </summary>
        /// <param name="self"></param>
        /// <param name="stream"></param>
        public static void WriteTo(this ICanRead self, Stream stream)
        {
            IMemento memento = new StreamMemento(stream, new FormatterStrategy());

            memento.ReadFrom(self);
        }
예제 #5
0
        /// <summary>
        /// Initialize an object from a stream
        /// </summary>
        /// <param name="self"></param>
        /// <param name="stream"></param>
        public static void ReadFrom(this ICanRead self, Stream stream)
        {
            var memento = new StreamMemento(stream, new FormatterStrategy());

            self.ReadFrom(memento);
        }