menu

Catatan komponen kontrol configureıf

Ketika menggunakan Windsor Castle saya sering subset dari komponen berdasarkan ada atau dengan cara yang berbeda seperti kualitas tertentu dari nilai konfigurasi untuk datang di sebuah skenario di mana Anda ingin diselamatkan mereka tumbuh. Untungnya untuk metode configureıf Windsor Castle menyediakan fungsionalitas untuk melakukannya, configureıf dapat menerapkan konfigurasi yang berbeda berdasarkan hasil evaluasi predikat predikat tertentu dilakukan.

Saya akan menggunakan skenario untuk menggambarkan hal ini sebagai berikut: Kita perlu memeriksa permintaan untuk halaman tertentu di website kami. Sebagai berikut

kontrol menggunakan preventif kita sebelum dan eksekusi yang kemudian dapat mengintervensi doa dan metode untuk melakukan menggunakan pencegahan, kode pencegahan

 public class auditıntercept adalah: ııntercept {public void Interceptor (ıınvocatio doa) {if (== invocation.method.n up & amp; quot; OnActionExecuting & amp; quot;) {auditrequest (doa); } Invocation.proceed (); } Void auditrequest Umum (doa ıınvocatio ini) {//}} Detail Audit persyaratan 

Permintaan untuk situs hanya untuk membuat alam dan bahwa halaman berfungsi untuk menunjukkan yang perlu dikontrol untuk menerapkan kontrol, sebagai berikut:

 requiresauditattribut public class ke: atribut {} [requiresaudit] public class AccountController: Pengendali {public Indeks ActionResult () {(Lihat rotasi); }} 

Jika Anda menambahkan kontak configureıf menggunakan metode controller untuk memeriksa apakah requiresauditattribut untuk adalah selama komponen dan auditıntercept persen berikutnya mendapatkan bagian yang menarik

 public class controllersınstal di ıwindsorınstal pada {insert public void (wadah ıwindsorcontain, toko ıconfigurationstor a) {container.regist adalah (alltypes.fromthisassembly () .basedo yang & amp; amp; lt; iControl dan amp; gt; () .Jika (Komponen .ısınsamenamespaceas & amp; amp l ; HomeControl pada & amp; Sons, rumus ()) .Jika (t = & amp; gt ;; Sons t.name.endswith (& amp; Sons berjudul kendali AS & amp; Sons, selanjutnya)) .Configur A (C & amp; Sons, C = .lifestyletransient ()) .configureıf (C & amp; Sons gt ;; c.ımplementation.ısdefined (typeof (requiresauditattribut) palsu), c = & amp; gt ;; Sons c.ınterceptors & amp; Sons lt; auditıntercept adalah & amp; Sons, rumus ())); }} 

Kode untuk artikel ini tersedia di Github.


Leave a Reply

Your email address will not be published. Required fields are marked *