Je travaille à travers Josh Smith's CommandSink Example et les structures base.Executed += (s, e) =>...
me lancent, quelqu'un peut-il aider à rendre ce cristal clair?quelqu'un peut-il expliquer cette structure C#: base.Executed + = (s, e) =>
ce que je comprends:
- base.CanExecute est l'événement de la classe héritée CommandBinding
- le + = est l'ajout d'un délégué à cet événement
- le délégué est la fonction anonyme qui suit cette ligne
ce que je ne comprends pas:
- est (s, e) est la signature de cette fonction?
- Où la variable s est-elle utilisée?
Voici le code dans le contexte:
public class CommandSinkBinding : CommandBinding
{
#region CommandSink [instance property]
ICommandSink _commandSink;
public ICommandSink CommandSink
{
get { return _commandSink; }
set
{
if (value == null)
throw new ArgumentNullException("Cannot set CommandSink to null.");
if (_commandSink != null)
throw new InvalidOperationException("Cannot set CommandSink more than once.");
_commandSink = value;
base.CanExecute += (s, e) =>
{
bool handled;
e.CanExecute = _commandSink.CanExecuteCommand(e.Command, e.Parameter, out handled);
e.Handled = handled;
};
base.Executed += (s, e) =>
{
bool handled;
_commandSink.ExecuteCommand(e.Command, e.Parameter, out handled);
e.Handled = handled;
};
}
}
...
donc vous pourriez aussi écrire (expéditeur, e) ou même (whatevernnn, e), c'est juste un espace réservé, non? –
Correct. La signature (s, e) ou (jimbob, blahvar) est juste votre convention de nommage pour les paramètres afin que vous puissiez les référencer dans le reste de la déclaration de méthode anonyme. Mais vous devriez vous en tenir à quelque chose d'assez évident comme (s, e)/(expéditeur, e)/(expéditeur, args) –