protected TAggregateRoot Deserialize(Stream stream)
        {
            var aggregateRoot            = Activator.CreateInstance <TAggregateRoot>();
            IAggregateRootSerializable s = (IAggregateRootSerializable)(object)aggregateRoot;

            s.DeserializeFrom(stream);
            return(aggregateRoot);
        }
        protected byte[] Serialize(TAggregateRoot aggregateRoot)
        {
            var stream = new MemoryStream();
            IAggregateRootSerializable s = (IAggregateRootSerializable)(object)aggregateRoot;

            s.SerializeTo(stream);
            return(stream.ToArray());
        }