Eu gostaria de declarar uma expressão lambda "vazia" que faz, bem, nada. Existe uma maneira de fazer algo assim sem precisar do DoNothing()
método?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
Minha intenção ao fazer isso é apenas controlar o estado ativado / desativado do meu comando WPF, mas isso é um aparte. Talvez seja muito cedo para mim, mas imagino que deve haver uma maneira de apenas declarar a x => DoNothing()
expressão lambda de alguma forma como esta para realizar a mesma coisa:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
Existe alguma maneira de fazer isso? Simplesmente parece desnecessário precisar de um método de não fazer nada.
noop
e eu esperaria que algo semelhante estivesse presente em C #.Func<Task> doNothing = async() => await Task.CompletedTask;
?Essa é uma pergunta antiga, mas pensei em adicionar algum código que achei útil para esse tipo de situação. Eu tenho uma
Actions
classe estática e umaFunctions
classe estática com algumas funções básicas:Acredito que isso ajuda a melhorar um pouco a legibilidade:
fonte
Isso deve funcionar:
fonte
Supondo que você só precise de um delegado (em vez de uma árvore de expressão), isso deve funcionar:
(Isso não funcionará com árvores de expressão, pois tem um corpo de instrução . Consulte a seção 4.6 da especificação C # 3.0 para obter mais detalhes.)
fonte
Não entendo completamente por que você precisa de um método DoNothing.
Você não pode simplesmente fazer:
fonte
new RelayCommand(..
.