Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 21364|Svar: 1

[Kilde] .net/C# bruger Attributter til at implementere simpel AOP

[Kopier link]
Opslået på 18/04/2017 14.54.11 | | |

Lad os starte med et simpelt stykke kode:



Lad os sige, at dette er et webprogram, vi vil først tjekke sessionen, derefter tjekke tilladelserne, starte en transaktion, skrive en log, så udføre selve operationen og til sidst skrive en log. Det er tydeligt, at vi ikke kan skrive alle metodekald til ovenstående operationer i DoSomething(), så koden bliver et stort stykke lort, så hvad skal vi gøre?

Der er mange måder at implementere det på, såsom ved at bruge frameworks som Spring, men i faktiske projekter er det ikke muligt at introducere et framework uformelt, og ofte er vi nødt til selv at skrive nogle mekanismer.

Her tænker jeg på Filteret i MVC, så længe du sætter et attributtag på Controlleren eller Handlingen, kan du gøre nogle andre ting før og efter metoden udføres. Så lad os simpelthen simulere en filterimplementering.

Først og fremmest omdannes den oprindelige metode til en elegant måde at bruge feature-mærker på:




Med feature-tags skal der være klasser, der svarer til feature-tags, samt AOP-implementeringer, som kan være uafhængigt indeholdt i en fil eller assembly.

Først er etiketten knyttet til metoden, implementeret som tom:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = falsk)]
public sealed class MyInterceptorMethodAttribute : Attribute { }
Derefter defineres etiketten, der skal knyttes til klassen:




Her er en MyAopHandler-klasse defineret, implementeret som følger:




Bemærk, at den specifikke operationsdel af koden ovenfor svarer til en "proxy-klasse", som i det væsentlige ændrer konteksten for metodeudførelsen. Objektorienterede programstrukturer såsom delegerede kan bruges til at eksponere den specifikke implementering for omverdenen til sekundær udvikling.




Tidligere:ES5, ES6, ES2016, ES. Næste: Hvad sker der med versionen af Javascrip{filter}t?
Næste:PowerShell Komme I Gang Tutorial - v0.3 version
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com