/// <summary>
        /// Serializes the object.
        /// </summary>
        /// <param name="info">Serialization info object.</param>
        /// <param name="context">Streaming context.</param>
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }

            info.AddValue(FormatVersionName, Constants.FormatVersion, typeof(string));
            SerializableTransferLocation serializableSourceLocation = new SerializableTransferLocation(this.Source);
            SerializableTransferLocation serializableDestLocation   = new SerializableTransferLocation(this.Destination);

            info.AddValue(SourceName, serializableSourceLocation, typeof(SerializableTransferLocation));
            info.AddValue(DestName, serializableDestLocation, typeof(SerializableTransferLocation));
            info.AddValue(TransferMethodName, this.TransferMethod);
            info.AddValue(TransferProgressName, this.ProgressTracker);
        }
        /// <summary>
        /// Serializes the object.
        /// </summary>
        /// <param name="info">Serialization info object.</param>
        /// <param name="context">Streaming context.</param>
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            if (info == null)
            {
                throw new ArgumentNullException("info");
            }

            info.AddValue(FormatVersionName, Constants.FormatVersion, typeof(string));
            SerializableTransferLocation serializableSourceLocation = new SerializableTransferLocation(this.Source);
            SerializableTransferLocation serializableDestLocation = new SerializableTransferLocation(this.Destination);
            info.AddValue(SourceName, serializableSourceLocation, typeof(SerializableTransferLocation));
            info.AddValue(DestName, serializableDestLocation, typeof(SerializableTransferLocation));
            info.AddValue(TransferMethodName, this.TransferMethod);
            info.AddValue(TransferProgressName, this.ProgressTracker);
        }