public ReversibleSetPropertyCommand(SetPropertyCommand setPropertyCommand)
        {
            if (setPropertyCommand == null)
            {
                throw new ArgumentNullException(nameof(setPropertyCommand));
            }

            this.setPropertyCommand = setPropertyCommand;
        }
        public SetPropertyCommand(SetPropertyCommand original)
        {
            if (original == null)
            {
                throw new ArgumentNullException(nameof(original));
            }

            this.Object   = original.Object;
            this.Property = original.Property;
            this.NewValue = original.NewValue;
        }
        private void CreateUndoSetPropertyCommand()
        {
            var previousValue = this.setPropertyCommand.Property.GetValue(this.setPropertyCommand.Object, BindingFlags.GetProperty | BindingFlags.Public, null, null, null);

            this.undoSetPropertyCommand = new SetPropertyCommand(this.setPropertyCommand.Object, this.setPropertyCommand.Property, previousValue);
        }
 public ReversibleSetPropertyCommand(object target, PropertyInfo property, object newValue)
 {
     this.setPropertyCommand = new SetPropertyCommand(target, property, newValue);
 }