Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 21364|Svar: 1

[Källa] .net/C# använder Attribut för att implementera enkel AOP

[Kopiera länk]
Publicerad på 2017-04-18 14:54:11 | | |

Låt oss börja med en enkel kodbit:



Så låt oss säga att detta är ett webbprogram, vi vill kontrollera sessionen först, sedan kontrollera behörigheterna, starta en transaktion, skriva en logg, sedan utföra själva operationen och slutligen skriva en logg. Uppenbarligen kan vi inte skriva alla metodanrop till ovanstående operationer i DoSomething(), så koden kommer att bli en stor skitstycke, så vad ska vi göra?

Det finns många sätt att implementera det, till exempel genom att använda ramverk som spring, men i faktiska projekt är det inte möjligt att introducera ett ramverk på ett avslappnat sätt, och ofta behöver vi skriva vissa mekanismer själva.

Här tänker jag på filtret i MVC, så länge du sätter en attributtagg på Controller eller Action kan du göra andra saker före och efter att metoden körs. Så låt oss helt enkelt simulera en filterimplementation.

För det första omvandlas den ursprungliga metoden till ett elegant sätt att ange funktionsetiketter:




Med funktionstaggar måste det finnas klasser som motsvarar funktionstaggar, samt AOP-implementationer, som kan innehållas oberoende i en fil eller assembler.

Först, etiketten som är kopplad till metoden, implementerad som tom:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = falsk)]
public sealed class MyInterceptorMethodAttribute : Attribute { }
Därefter definieras etiketten som ska fästas vid klassen:




Här är en MyAopHandler-klass definierad och implementerad enligt följande:




Observera att den specifika operationsdelen av koden ovan motsvarar en "proxyklass", som i princip ändrar kontexten för metodexekveringen. Objektorienterade programstrukturer såsom delegater kan användas för att exponera den specifika implementationen för omvärlden för sekundär utveckling.




Föregående:ES5, ES6, ES2016, ES. Nästa: Vad händer med versionen av Javascrip{filter}t?
Nästa:PowerShell Komma igång handledning - version v0.3
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com