Mam różne metody, które wszystkie muszą wykonywać te same funkcje, zanim będą kontynuowane we własnej implementacji. Teraz mogłem zaimplementować te funkcje w każdej metodzie, ale zastanawiałem się, czy istnieje sposób na wykorzystanie tego, aby to zrobić? Jako bardzo prosty przykład, wszystkie połączenia sieciowe muszą sprawdzić połączenie sieciowe.Używanie atrybutów do metod wywoływania
public void GetPage(string url)
{
if(IsNetworkConnected())
...
else
...
}
to będzie działać, ale będę musiał wywołać metodę IsNetworkConnected
dla każdej metody, która korzysta z sieci i obsługiwać go indywidualnie. Zamiast tego chciałbym zrobić to
[NetworkCall]
public void GetPage(string url)
{
...
}
Jeśli sieć nie jest dostępna, metoda nazywa się błąd i zamiast GetPage
jest ignorowany, inaczej GetPage
jest wywoływany.
To brzmi bardzo podobnie do programowania zorientowanego na aspekt, ale nie chcę zaimplementować całej struktury dla kilku wywołań. Jest to raczej ćwiczenie edukacyjne niż implementacyjne, więc byłem ciekawy, jak najlepiej byłoby coś takiego.
Co z dziedziczeniem?Niech wszyscy wywodzą się z podstawowej klasy "Sieć" lub czegoś podobnego. – gdoron