Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 21364|Odpoveď: 1

[Zdroj] .net/C# používa atribúty na implementáciu jednoduchého AOP

[Kopírovať odkaz]
Zverejnené 18. 4. 2017 14:54:11 | | |

Začnime jednoduchým kódom:



Povedzme, že ide o webový program, najprv chceme skontrolovať reláciu, potom oprávnenia, spustiť transakciu, napísať log, potom vykonať samotnú operáciu a nakoniec napísať log. Samozrejme, nemôžeme napísať všetky volania metód do vyššie uvedených operácií v DoSomething(), takže kód sa stane veľkým problémom, čo teda máme robiť?

Existuje mnoho spôsobov, ako ho implementovať, napríklad pomocou frameworkov ako spring, ale v skutočných projektoch nie je možné framework zaviesť len tak a často musíme niektoré mechanizmy napísať sami.

Tu si predstavujem filter v MVC – pokiaľ dáte atribútový tag na Controller alebo Action, môžete robiť aj iné veci pred a po vykonaní metódy. Takže jednoducho simulujme implementáciu filtra.

V prvom rade sa pôvodná metóda transformuje na elegantný spôsob označovania funkcií:




Pri feature tagoch musia existovať triedy zodpovedajúce feature tagom, ako aj AOP implementácie, ktoré môžu byť nezávisle obsiahnuté v súbore alebo assembleri.

Najprv označenie pripojené k metóde, implementované ako prázdne:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class MyInterceptorMethodAttribute : Attribute { }
Potom definujeme označenie, ktoré sa má priradiť k triede:




Tu je trieda MyAopHandler definovaná, implementovaná nasledovne:




Všimnite si, že časť špecifickej operácie vyššie uvedeného kódu je ekvivalentná "proxy triede", ktorá v podstate mení kontext vykonávania metódy. Objektovo orientované programové štruktúry, ako sú delegáti, môžu byť použité na sprístupnenie konkrétnej implementácie vonkajšiemu svetu pre sekundárny vývoj.




Predchádzajúci:ES5, ES6, ES2016, ES. Ďalej: Čo sa deje s verziou Javascrip{filter}t?
Budúci:PowerShell Úvodný tutoriál - verzia v0.3
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com