Laksanakan arahan dalam struktur MVVM boleh guna semula
Dalam pelaksanaan MVVM baru-baru ini, keperluan untuk berbilang arahan telah timbul. Untuk mengurangkan proses yang membosankan mencipta kelas ICommand tunggal, pendekatan alternatif telah dicipta. Bagaimanapun, keberkesanan dan potensi penambahbaikannya masih belum dibincangkan.
Penyelesaian yang dicadangkan: ICommand Generik
Untuk menyepadukan penciptaan arahan, kelas ICommand generik diperkenalkan, menggunakan perwakilan untuk melaksanakan dan melaksanakan fungsi boleh laku. Dalam pembina ICommand ini, dua kaedah perwakilan diberikan. Selepas itu, kaedah ICommand memanggil kaedah perwakilan.
Walaupun fungsi berfungsi, ini menimbulkan persoalan sama ada pendekatan ini konsisten dengan amalan terbaik atau jika penyelesaian yang lebih sesuai wujud.
Alternatif: RelayCommand
Seperti yang ditunjukkan oleh Karl Shifflet, satu kaedah yang sangat disyorkan ialah RelayCommand. Ia mentakrifkan operasi yang dilakukan apabila dipanggil.
Contoh pelaksanaan 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>
Pelaksanaan ini memudahkan penciptaan arahan, seperti yang ditunjukkan dalam contoh berikut:
<code class="language-csharp">public class MyViewModel { public ICommand DoSomethingCommand => new RelayCommand( p => this.CanDoSomething(), p => this.DoSomeImportantMethod()); }</code>
Sumber lain:
• "Corak - Aplikasi WPF Menggunakan Corak Reka Bentuk MVVM" oleh Josh Smith memberikan pandangan lanjut tentang pendekatan RelayCommand.
Atas ialah kandungan terperinci Adakah ICommand Generik atau RelayCommand Pendekatan Terbaik untuk Perintah MVVM Boleh Digunakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!