Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 21364|Odpověď: 1

[Zdroj] .net/C# používá atributy pro implementaci jednoduchého AOP

[Kopírovat odkaz]
Zveřejněno 18.04.2017 14:54:11 | | |

Začněme jednoduchým kódem:



Řekněme, že je to webový program, chceme nejprve zkontrolovat relaci, pak zkontrolovat oprávnění, zahájit transakci, napsat log, pak samotnou operaci a nakonec zapsat log. Samozřejmě nemůžeme napsat všechny volání metod do výše uvedených operací do DoSomething(), takže kód se stane velkým šrotem, co tedy máme dělat?

Existuje mnoho způsobů, jak ji implementovat, například pomocí frameworků jako Spring, ale v reálných projektech není možné framework zavést jen tak náhodně, a často musíme některé mechanismy napsat sami.

Tady si představuji filtr v MVC – pokud na Controller nebo Action dáte atributový tag, můžete dělat i jiné věci před a po spuštění metody. Takže si jednoduše simulujme implementaci filtru.

Nejprve je původní metoda přeměněna na elegantní způsob označování funkcí:




U feature tagů musí existovat třídy odpovídající feature tagům, stejně jako implementace AOP, které mohou být samostatně obsaženy v souboru nebo assembleru.

Nejprve označení připojené k metodě, implementované jako prázdné:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
veřejně zapečetěná třída MyInterceptorMethodAttribute : Attribute { }
Poté definujeme štítek, který bude přiřazen ke třídě:




Zde je třída MyAopHandler definovaná, implementovaná následovně:




Všimněte si, že specifická část kódu výše je ekvivalentní "třídě proxy", která v podstatě mění kontext provádění metody. Objektově orientované programové struktury, jako jsou delegáti, lze použít k vystavení konkrétní implementace vnějšímu světu pro sekundární vývoj.




Předchozí:ES5, ES6, ES2016, ES. Dále: Co se děje s verzí Javascrip{filter}t?
Další:PowerShell Úvodní návod - verze v0.3
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com