Me gustaría declarar una expresión lambda "vacía" que no hace, bueno, nada. ¿Hay alguna forma de hacer algo como esto sin necesitar el DoNothing()
método?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
Mi intención al hacer esto es solo controlar el estado habilitado / deshabilitado de mi comando WPF, pero eso es un aparte. Tal vez sea demasiado temprano para mí, pero imagino que debe haber una manera de declarar la x => DoNothing()
expresión lambda de alguna manera como esta para lograr lo mismo:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
Hay alguna manera de hacer esto? Simplemente parece innecesario necesitar un método de no hacer nada.
noop
y esperaría que algo similar esté presente en C #.Func<Task> doNothing = async() => await Task.CompletedTask;
?Esta es una pregunta antigua, pero pensé que agregaría algún código que encontré útil para este tipo de situación. Tengo una
Actions
clase estática y unaFunctions
clase estática con algunas funciones básicas en ellas:Creo que esto ayuda a mejorar la legibilidad solo un poquito:
fuente
Esto debería funcionar:
fuente
Suponiendo que solo necesita un delegado (en lugar de un árbol de expresión), esto debería funcionar:
(Eso no funcionará con árboles de expresión, ya que tiene un cuerpo de declaración . Consulte la sección 4.6 de la especificación C # 3.0 para obtener más detalles).
fuente
No entiendo del todo por qué necesita un método DoNothing.
¿No puedes simplemente hacer:
fuente
new RelayCommand(..
.