Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 21364|Vastaus: 1

[Lähde] .net/C# käyttää attribuutteja toteuttaakseen yksinkertaisen AOP:n

[Kopioi linkki]
Julkaistu 18.4.2017 14.54.11 | | |

Aloitetaan yksinkertaisella koodinpätkällä:



Oletetaan, että kyseessä on web-ohjelma, haluamme ensin tarkistaa istunnon, sitten tarkistaa oikeudet, aloittaa transaktion, kirjoittaa lokin, sitten suorittaa itse operaatio ja lopuksi kirjoittaa loki. Ilmiselvästi emme voi kirjoittaa kaikkia metodikutsuja yllä mainittuihin operaatioihin DoSomething(), joten koodista tulee iso roska, joten mitä meidän pitäisi tehdä?

On monia tapoja toteuttaa se, kuten käyttämällä kehyksiä kuten spring, mutta varsinaisissa projekteissa kehystä ei voi esitellä kevyesti, ja usein meidän täytyy kirjoittaa joitakin mekanismeja itse.

Tässä ajattelen MVC:n suodatinta: kunhan laitat attribuuttitunnisteen ohjaimeen tai toimintoon, voit tehdä muita asioita ennen ja jälkeen metodin suorituksen. Simuloidaan siis yksinkertaisesti suodattimen toteutusta.

Ensinnäkin alkuperäinen menetelmä on muutettu elegantiksi tavaksi käyttää ominaisuustunnisteita:




Ominaisuustageissa täytyy olla luokkia, jotka vastaavat ominaisuustageja, sekä AOP-toteutuksia, jotka voidaan itsenäisesti sisällyttää tiedostoon tai kokoonpanoon.

Ensiksi metodiin liitetty etiketti, joka toteutettiin tyhjänä:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = väärin)]
public suljettu luokka MyInterceptorMethodAttribute : Attribute { }
Tämän jälkeen määritellään luokkaan liitettävä tunniste:




Tässä on MyAopHandler-luokka määriteltynä, toteutettuna seuraavasti:




Huomaa, että yllä oleva koodin operaation osa vastaa "proxy-luokkaa", joka käytännössä muuttaa metodin suorituksen kontekstia. Oliopohjaisia ohjelmarakenteita, kuten delegaatit, voidaan käyttää esittelemään tietty toteutus ulkomaailmalle toissijaista kehitystä varten.




Edellinen:ES5, ES6, ES2016, ES. Seuraavaksi: Mitä Javascrip{filter}t -versiolle oikein kuuluu?
Seuraava:PowerShellin aloitusopas - v0.3 versio
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com