Je voudrais déclarer une expression lambda "vide" qui ne fait rien. Existe-t-il un moyen de faire quelque chose comme ça sans avoir besoin de la DoNothing()
méthode?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
Mon intention en faisant cela est de contrôler uniquement l'état activé / désactivé de ma commande WPF, mais c'est un aparté. Il est peut-être trop tôt le matin pour moi, mais j'imagine qu'il doit y avoir un moyen de simplement déclarer l' x => DoNothing()
expression lambda d'une manière comme celle-ci pour accomplir la même chose:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
Y a-t-il un moyen de faire cela? Il semble simplement inutile d'avoir besoin d'une méthode de ne rien faire.
noop
et je m'attendrais à ce que quelque chose de similaire soit présent en C #.Func<Task> doNothing = async() => await Task.CompletedTask;
?C'est une vieille question, mais j'ai pensé ajouter du code que j'ai trouvé utile pour ce type de situation. J'ai une
Actions
classe statique et uneFunctions
classe statique avec quelques fonctions de base:Je pense que cela permet d'améliorer un tout petit peu la lisibilité:
la source
Cela devrait fonctionner:
la source
En supposant que vous n'avez besoin que d'un délégué (plutôt que d'un arbre d'expression), cela devrait fonctionner:
(Cela ne fonctionnera pas avec les arbres d'expression car il a un corps d'instruction . Voir la section 4.6 de la spécification C # 3.0 pour plus de détails.)
la source
Je ne comprends pas tout à fait pourquoi vous avez besoin d'une méthode DoNothing.
Tu ne peux pas simplement faire:
la source
new RelayCommand(..
.