Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 21364|Yanıt: 1

[Kaynak] .net/C#, basit AOP uygulamak için Attributes kullanır

[Bağlantıyı kopyala]
Yayınlandı 18.04.2017 14:54:11 | | |

Basit bir kodla başlayalım:



Diyelim ki bu bir web programı, önce oturumu kontrol etmek, sonra izinleri kontrol etmek, bir işlem başlatmak, bir günlük yazmak, sonra işlemi kendisini yürütmek ve son olarak bir günlük yazmak istiyoruz. Açıkçası, yukarıdaki işlemlere tüm metod çağrılarını DoSomething() içinde yazamayız, bu yüzden kod büyük bir berbat haline gelecek, peki ne yapmalıyız?

Bunu uygulamanın birçok yolu var, örneğin bahar gibi çerçeveler kullanmak gibi, ancak gerçek projelerde bir çerçeveyi rahatça tanıtmak mümkün değildir ve çoğu zaman bazı mekanizmaları kendimiz yazmamız gerekir.

Burada MVC'deki Filtreyi düşünüyorum, Controller veya Action'a bir özellik etiketi koyarsanız, yöntem çalıştırılmadan önce ve sonra başka şeyler yapabilirsiniz. O halde sadece bir filtre uygulamasını simüle edelim.

Öncelikle, orijinal yöntem özellik etiketlerinin zarif bir biçimine dönüştürülür:




Özellik etiketlerinde, özellik etiketlerine karşılık gelen sınıflar ve bağımsız olarak bir dosyada veya montajda yer alabilen AOP uygulamaları olmalıdır.

İlk olarak, yönteme eklenmiş ve boş olarak uygulanan etiket:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = yanlış)]
public sealed class MyInterceptorMethodAttribute : Attribute { }
Bundan sonra, sınıfa eklenecek etiketi tanımlayın:




İşte şu şekilde uygulanmış bir MyAopHandler sınıfı tanımlanmıştır:




Yukarıdaki kodun özel işlem kısmının, "proxy sınıfı"na eşdeğer olduğunu ve bu da yöntem yürütme bağlamını esasen değiştirir. Delege gibi nesne yönelimli program yapıları, özel uygulamayı ikincil geliştirme için dış dünyaya tanıtmak için kullanılabilir.




Önceki:ES5, ES6, ES2016, ES. Sonraki: Javascrip{filter}t sürümünde neler oluyor?
Önümüzdeki:PowerShell Başlangıç Eğitimi - v0.3 sürümü
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com