Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 21364|Svare: 1

[Kilde] .net/C# bruker attributter for å implementere enkel AOP

[Kopier lenke]
Publisert på 18.04.2017 14:54:11 | | |

La oss starte med en enkel kode:



La oss si at dette er et webprogram, vi vil sjekke økten først, så sjekke tillatelsene, starte en transaksjon, skrive en logg, så utføre selve operasjonen, og til slutt skrive en logg. Åpenbart kan vi ikke skrive alle metodekallene til de ovennevnte operasjonene i DoSomething(), så koden vil bli en stor dritt, så hva bør vi gjøre?

Det finnes mange måter å implementere det på, som å bruke rammeverk som Spring, men i faktiske prosjekter er det ikke mulig å introdusere et rammeverk uformelt, og ofte må vi skrive noen mekanismer selv.

Her tenker jeg på Filteret i MVC, så lenge du setter en attributttagg på Kontrolleren eller Handlingen, kan du gjøre noen andre ting før og etter at metoden kjøres. Så la oss enkelt simulere en filterimplementering.

Først og fremst er den opprinnelige metoden omgjort til en elegant måte å bruke funksjonsetiketter på:




Med feature-tagger må det finnes klasser som tilsvarer feature-tagger, samt AOP-implementasjoner, som kan være uavhengig inneholdt i en fil eller assembly.

Først, etiketten knyttet til metoden, implementert som tom:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = falsk)]
offentlig sealed class MyInterceptorMethodAttribute : Attribute { }
Deretter definerer du etiketten som skal knyttes til klassen:




Her er en MyAopHandler-klasse definert, implementert som følger:




Merk at den spesifikke operasjonsdelen av koden ovenfor tilsvarer en "proxy-klasse", som i praksis endrer konteksten for metodens utførelse. Objektorienterte programstrukturer som delegater kan brukes til å eksponere den spesifikke implementasjonen for omverdenen for sekundær utvikling.




Foregående:ES5, ES6, ES2016, ES. Neste: Hva skjer med versjonen av Javascrip{filter}t?
Neste:PowerShell Komme i gang-veiledning - v0.3-versjon
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com