Menu

Intercepcja w Ninject

5 stycznia 2017 - Programowanie
Intercepcja w Ninject

Istnieje wiele sytuacji podczas programowania które są żmudne i nudne. Wiele razy powtarzamy ten sam schemat działania: trzeba zalogować wyjątki, wywołania metody wraz z argumentami. Nie ma problemu możemy to zrobić wprost z wywołania w kodzie – najprostszy i najczęściej używany wzorzec : „Copy Paste”, czyli po prostu try catch w kodzie, czy Logger.Log i sprawa załatwiona. Robimy tak od zawsze 🙂

Chciałbym przestawić inne podejście, takie w którym możemy zastosować proxy, gdzie wywołanie danej metody będzie opakowane. Iterceptor przy użyciu biblioteki Ninject jest idealnym i prostym rozwiązaniem, a dzięki niemu nie będziemy mieć piękny i czysty kod!

Przyklady zastosowania interceptorów w naszym kodzie:

Potrzebne biblioteki – nugety:
Instancje interceptorów bazują na DynamicProxy przy pomocy implementacji LinFu lub Castle ja używam Casle więc potrzebujemy nugety

Więc możemy zaczynać. Poniżej prosty przykład użycia interceptora dla bindingu. Dzięki takiemu użyciu każde wywołanie metody klasy będzie opakowane naszym interceptorem.

Przykładowy kod inerceptora do logowania:

zawiera on dostęp do nazwy metody, argumentów oraz wyciągnięcie z kontenera IoC instancji loggera

Takie najprostsze użycie możemy rozwinąć o interceptowanie metod, czy klas udekorowanych przez atrybut lub wywołać wiele interceptorów na danej metodzie. Przykłady poniżej pokazują jak użyć wielu interceptorów wraz z oznaczeniem kolejności wywołania:

W atrybutach

w bindingu

Użycie interceptorów jako atrybuty:

Dodaj komentarz