Heim > Backend-Entwicklung > C++ > Ist ein generisches ICommand oder RelayCommand der beste Ansatz für wiederverwendbare MVVM-Befehle?

Ist ein generisches ICommand oder RelayCommand der beste Ansatz für wiederverwendbare MVVM-Befehle?

Mary-Kate Olsen
Freigeben: 2025-01-20 17:30:11
Original
212 Leute haben es durchsucht

Is a Generic ICommand or RelayCommand the Best Approach for Reusable MVVM Commands?

Befehle in einer wiederverwendbaren MVVM-Struktur implementieren

In neueren MVVM-Implementierungen ist die Notwendigkeit mehrerer Befehle entstanden. Um den mühsamen Prozess der Erstellung einer einzelnen ICommand-Klasse zu vereinfachen, wurde ein alternativer Ansatz entwickelt. Die Wirksamkeit und mögliche Verbesserungen müssen jedoch noch diskutiert werden.

Vorgeschlagene Lösung: Generisches ICommand

Um die Befehlserstellung zu integrieren, wird eine generische ICommand-Klasse eingeführt, die Delegaten zum Ausführen und Implementieren ausführbarer Funktionen verwendet. Im Konstruktor dieses ICommand werden zwei Delegate-Methoden zugewiesen. Anschließend ruft die ICommand-Methode die Delegate-Methode auf.

Obwohl die Funktionalität funktioniert, wirft dies die Frage auf, ob dieser Ansatz mit Best Practice vereinbar ist oder ob es eine geeignetere Lösung gibt.

Eine Alternative: RelayCommand

Wie Karl Shifflet gezeigt hat, ist RelayCommand eine sehr empfehlenswerte Methode. Es definiert eine Operation, die beim Aufruf ausgeführt wird.

Beispielimplementierung von RelayCommand:

<code class="language-csharp">public class RelayCommand : ICommand
{
    private readonly Predicate<object> _canExecute;
    private readonly Action<object> _execute;

    public RelayCommand(Predicate<object> canExecute, Action<object> execute)
    {
        _canExecute = canExecute;
        _execute = execute;
    }

    // ICommand 实现...

}</code>
Nach dem Login kopieren

Diese Implementierung vereinfacht die Befehlserstellung, wie im folgenden Beispiel gezeigt:

<code class="language-csharp">public class MyViewModel
{
    public ICommand DoSomethingCommand =>
        new RelayCommand(
            p => this.CanDoSomething(),
            p => this.DoSomeImportantMethod());
}</code>
Nach dem Login kopieren

Andere Ressourcen:

• „Patterns – WPF Applications Using MVVM Design Pattern“ von Josh Smith bietet weitere Einblicke in den RelayCommand-Ansatz.

Das obige ist der detaillierte Inhalt vonIst ein generisches ICommand oder RelayCommand der beste Ansatz für wiederverwendbare MVVM-Befehle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage