Реализация интерфейса имеет дополнительный аргумент в функции

#c# #.net #wpf

#c# #.net #wpf

Вопрос:

Вот определение члена ICommand :http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.execute.aspx

Подпись является:

  
void Execute(
    Object parameter
)
  

Он реализован RoutedCommand со следующей подписью ( http://msdn.microsoft.com/en-us/library/system.windows.input.routedcommand.execute.aspx ) :

 
public void Execute(
    Object parameter,
    IInputElement target
)
  

Как RoutedCommand может реализовать ICommand с дополнительным аргументом (IInputElement) в функции-члене?

Ответ №1:

Он использует явную реализацию интерфейса, чтобы «скрыть» ICommand.Execute метод, который принимает один параметр. Execute Метод, который принимает два параметра , не является реализацией ICommand.Execute .

 public class RoutedCommand : ICommand
{
    public void Execute(object parameter, IInputElement target)
    {
        // ...
    }

    // explicit interface implementation of ICommand.Execute
    void ICommand.Execute(object parameter)
    {
        // ...
    }
}
  

Комментарии:

1. Спасибо за ответ. Я также был удивлен, но и здесь мой запрос был разрешен.

Ответ №2:

ICommand.Метод интерфейса Execute() реализован явно. Документы здесь.