REKLAMA

Implementacja traitów w języku C# przy użyciu biblioteki Fody

Często staramy się używać już istniejących rozwiązań. Programowanie obiektowe wspiera to podejście w naturalny sposób przez dziedziczenie implementacji, co jednak nie zawsze jest nam na rękę, gdyż czasami chcielibyśmy tylko wykorzystać istniejące metody, bez całego balastu dziedziczenia. W tym artykule zaprezentuję przykładową implementację traitów w języku C# przy użyciu biblioteki Fody.

Programowanie obiektowe daje nam wiele możliwości ponownego wykorzystania istniejącej implementacji. Poprzez programowanie do interfejsu możemy w trakcie wykonywania programu używać różnych implementacji klas bez dokładnej wiedzy, jak te implementacje działają i czym się różnią. Stosując to podejście, jesteśmy w stanie łatwo rozszerzać program o nowe możliwości bez modyfikowania istniejącego kodu – jest to zasada Open Closed Principle [1]. Spoglądając z wyższej perspektywy, jesteśmy w stanie wymieniać całe moduły aplikacji, co jeszcze bardziej wspiera współdzielenie istniejących fragmentów kodu(...)

Zagadnienia poruszane w tym artykule:

  • Extension methods a mechanizm traitów;
  • Plan;
  • Fody;
  • Implementacja;
  • Jak to działa;
  • Efekt;
  • Wywołania metod z typów bazowych.

Artykuł pochodzi z miesięcznika "Programista" nr 55. Jest to wydanie styczeń / luty. Szczegółowy spis treści tego wydania: http://programistamag.pl/programista-12-2016-55/

Autorem artykułu jest Adam Furmanek. Absolwent Informatyki na AGH WIEiT, programista .NET w firmie Intive w Krakowie, moderator forum Matematyka.pl. Zainteresowany programowaniem systemowym, aplikacjami desktopowymi, rozwiązaniami mobilnymi i szeroko rozumianą siecią. Zawsze dąży do zrozumienia działania używanych narzędzi, nie boi się asemblera i generowania kodu maszynowego w locie. W wolnych chwilach prowadzi blog „Random IT Utensils” pod adresem: https://blog.adamfurmanek.pl, gdzie opisuje wewnętrzne mechanizmy platformy .NET, programowanie liniowe całkowitoliczbowe (ILP), a także historie debugowania rzeczywistych systemów.

>>FRAGMENT TEGO ARTYKUŁU DO POBRANIA<<