/// <summary>
        /// Copies the properties to a target object.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="raisePropertyChanged">if set to <c>true</c> the PropertyChanged event may be raised.</param>
        /// <returns>true if at least one property has been changed; false otherwise.</returns>
        public virtual bool CopyProperties(AutoObject target, bool raisePropertyChanged)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            bool b = target.RaisePropertyChanged;

            target.RaisePropertyChanged = raisePropertyChanged;
            try
            {
                bool changed = false;
                foreach (KeyValuePair <string, object> kv in Properties)
                {
                    if (target.SetProperty(kv.Key, kv.Value))
                    {
                        changed = true;
                    }
                }
                return(changed);
            }
            finally
            {
                target.RaisePropertyChanged = b;
            }
        }
 /// <summary>
 /// Copies the properties to a target object.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <returns>true if at least one property has been changed; false otherwise.</returns>
 public virtual bool CopyProperties(AutoObject target)
 {
     return(CopyProperties(target, false));
 }