Зачем в этом примере наследование? - 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
- {
- .......
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д