Зачем в этом примере наследование? - C#

Узнай цену своей работы

Формулировка задачи:

Для того что бы лучше разбираться в программировании изучаю исходный код других программ. Встретил такой код:
    /// <summary>
    /// The base implementation of a command.
    /// </summary>
    public abstract class CommandBase
        : ICommand
    {
        public event EventHandler CanExecuteChanged
        {
            add { System.Windows.Input.CommandManager.RequerySuggested += value; }
            remove { System.Windows.Input.CommandManager.RequerySuggested -= value; }
        }
        public void OnCanExecuteChanged()
        {
            System.Windows.Input.CommandManager.InvalidateRequerySuggested();
        }
        public virtual bool CanExecute(object parameter)
        {
            return true;
        }
        public void Execute(object parameter)
        {
            if (!CanExecute(parameter)) {
                return;
            }
            OnExecute(parameter);
        }
        protected abstract void OnExecute(object parameter);
    }
    /// <summary>
    /// The command that relays its functionality by invoking delegates.
    /// </summary>
    public class RelayCommand
        : CommandBase
    {
        private Action<object> execute;
        private Func<object, bool> canExecute;
      
        public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
        {
            if (execute == null) {
                throw new ArgumentNullException("execute");
            }
            if (canExecute == null) {             
                canExecute = (o) => true;
            }
            this.execute = execute;
            this.canExecute = canExecute;
        }
   
        public override bool CanExecute(object parameter)
        {
            return canExecute(parameter);
        }
   
        protected override void OnExecute(object parameter)
        {
            execute(parameter);
        }
    }
Не могу понять, зачем здесь нужен виртуальный класс и наследование?

Решение задачи: «Зачем в этом примере наследование?»

textual
Листинг программы
public class RelayAsyncCommand: CommandBase
{
.......
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы