Chciałbym zadeklarować „puste” wyrażenie lambda, które nic nie robi. Czy istnieje sposób na zrobienie czegoś takiego bez konieczności stosowania DoNothing()
metody?
public MyViewModel()
{
SomeMenuCommand = new RelayCommand(
x => DoNothing(),
x => CanSomeMenuCommandExecute());
}
private void DoNothing()
{
}
private bool CanSomeMenuCommandExecute()
{
// this depends on my mood
}
Moim zamiarem jest kontrolowanie tylko stanu włączenia / wyłączenia mojego polecenia WPF, ale to na bok. Może jest dla mnie po prostu za wcześnie rano, ale wyobrażam sobie, że musi istnieć sposób, aby po prostu zadeklarować x => DoNothing()
wyrażenie lambda w taki sposób, aby osiągnąć to samo:
SomeMenuCommand = new RelayCommand(
x => (),
x => CanSomeMenuCommandExecute());
Czy jest jakiś sposób, aby to zrobić? Po prostu wydaje się niepotrzebne, aby potrzebować metody nie robienia niczego.
noop
i spodziewałbym się, że coś podobnego będzie obecne w C #.Func<Task> doNothing = async() => await Task.CompletedTask;
?To stare pytanie, ale pomyślałem, że dodam kod, który okazał się przydatny w tego typu sytuacjach. Mam
Actions
klasę statyczną i klasęFunctions
statyczną z kilkoma podstawowymi funkcjami:Uważam, że to trochę poprawia czytelność:
źródło
To powinno działać:
źródło
Zakładając, że potrzebujesz tylko delegata (a nie drzewa wyrażeń), to powinno działać:
(To nie zadziała z drzewami wyrażeń, ponieważ ma treść instrukcji . Aby uzyskać więcej informacji, zobacz sekcję 4.6 specyfikacji języka C # 3.0).
źródło
Nie do końca rozumiem, dlaczego potrzebujesz metody DoNothing.
Nie możesz po prostu zrobić:
źródło
new RelayCommand(..
.