Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 21364|Odpowiedź: 1

[Źródło] .net/C# wykorzystuje atrybuty do implementacji prostego AOP

[Skopiuj link]
Opublikowano 18.04.2017 14:54:11 | | |

Zacznijmy od prostego fragmentu kodu:



Załóżmy, że to program webowy – najpierw chcemy sprawdzić sesję, potem sprawdzić uprawnienia, rozpocząć transakcję, zapisać log, następnie wykonać samą operację, a na końcu zapisać log. Oczywiście nie możemy zapisać wszystkich wywołań metod do powyższych operacji w DoSomething(), więc kod stanie się wielkim bałaganem, więc co powinniśmy zrobić?

Istnieje wiele sposobów na jego implementację, na przykład korzystając z frameworków takich jak Spring, ale w rzeczywistych projektach nie da się wprowadzić frameworka na luzer, a często trzeba napisać niektóre mechanizmy samodzielnie.

Tutaj myślę o filtrze w MVC – jeśli umieścisz tag atrybutu na kontrolerze lub akcji, możesz robić inne rzeczy przed i po wykonaniu metody. Zatem po prostu symulujmy implementację filtra.

Przede wszystkim oryginalna metoda została przekształcona w elegancki sposób etykietowania cech:




W przypadku znaczników cech muszą istnieć klasy odpowiadające znacznikom cech, a także implementacje AOP, które mogą być niezależnie zawarte w pliku lub asemblerze.

Najpierw etykieta dołączona do metody, zaimplementowana jako pusta:

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
publiczna zamknięta klasa MyInterceptorMethodAttribute : Attribute { }
Następnie definiuj etykietę, która ma być przypisana do klasy:




Oto klasa MyAopHandler zdefiniowana, zaimplementowana w następujący sposób:




Należy zauważyć, że specyficzna część operacji w powyższym kodzie jest równoważna "klasie proxy", która zasadniczo zmienia kontekst wykonania metody. Struktury programów obiektowych, takie jak delegaty, mogą być używane do udostępniania konkretnej implementacji światu zewnętrznemu do rozwoju wtórnego.




Poprzedni:ES5, ES6, ES2016, ES. Następne: Co się dzieje z wersją Javascrip{filter}t?
Następny:PowerShell Getting Started, Tutorial - wersja v0.3
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com