Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 21364|Jawab: 1

[Sumber] .net/C# menggunakan Atribut untuk mengimplementasikan AOP sederhana

[Salin tautan]
Diposting pada 18/04/2017 14.54.11 | | |

Mari kita mulai dengan sepotong kode sederhana:



Jadi katakanlah ini adalah program web, kita ingin memeriksa sesi terlebih dahulu, lalu memeriksa izin, memulai transaksi, menulis log, lalu menjalankan operasi itu sendiri, dan terakhir menulis log. Jelas, kita tidak dapat menulis semua panggilan metode ke operasi di atas di DoSomething(), jadi kode akan menjadi omong kosong besar, jadi apa yang harus kita lakukan?

Ada banyak cara untuk menerapkannya, seperti menggunakan kerangka kerja seperti pegas, tetapi dalam proyek aktual, tidak mungkin untuk memperkenalkan kerangka kerja dengan santai, dan berkali-kali kita perlu menulis beberapa mekanisme sendiri.

Di sini saya memikirkan Filter di MVC, selama Anda menempatkan tag atribut pada Pengontrol atau Tindakan, Anda dapat melakukan beberapa hal lain sebelum dan sesudah metode dieksekusi. Jadi mari kita simulasikan implementasi filter.

Pertama-tama, metode asli diubah menjadi cara label fitur yang elegan:




Dengan tag fitur, harus ada kelas yang sesuai dengan tag fitur, serta implementasi AOP, yang dapat dimuat secara independen dalam file atau rakitan.

Pertama, label yang dilampirkan pada metode, diimplementasikan sebagai kosong:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
class tertutup publik MyInterceptorMethodAttribute : Atribut { }
Setelah itu, tentukan label yang akan dilampirkan ke kelas:




Berikut adalah kelas MyAopHandler yang didefinisikan, diimplementasikan sebagai berikut:




Perhatikan bahwa bagian operasi spesifik dari kode di atas setara dengan "kelas proxy", yang pada dasarnya mengubah konteks eksekusi metode. Struktur program berorientasi objek seperti delegasi dapat digunakan untuk mengekspos implementasi spesifik ke dunia luar untuk pengembangan sekunder.




Mantan:ES5, ES6, ES2016, ES. Berikutnya: Apa yang terjadi dengan versi Javascrip{filter}t?
Depan:Tutorial Memulai PowerShell - versi v0.3
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com