Refleksja – odczyt metadanych

Refleksja

Refleksja jest mechanizmem umożliwiającym odczytywanie metadanych. Dzięki niemu możemy odczytać atrybuty i własności obiektów w bibliotekach. Dzięki temu mechanizmowi możemy bez trudu odczytywać własne atrybuty tworzone jak w poprzednim wpisie https://mateuszstanek.pl/2018/02/04/wlasny-atrybut/

Ładowania biblioteki

Informację o bibliotece można pozyskać na kilka sposobów. W zależności jakie assembly chcemy załadować. Do wyboru mamy kilka metod dostępnych w klasie Assembly. Kilka z dostępnych metod to :

  • GetAssembly – która jako parametr przyjmuje typ klasy – zwraca nam assembly, które ten typ zawiera
  • GetExecutingAssembly – zwraca assembly, które jest aktualnie wykonywane, czyli to assembly, w którym znajduje się kod wywołujący zapytanie
  • GetCallingAssembly – zwraca assembly, które wywołało metodę, w której wywołujemy zapytanie
  • GetEntryAssembly – zwraca assembly, którego proces jest wykonywany
  • LoadFrom – która jako parametr przyjmuje ścieżkę do biblioteki – zwraca nam assembly tego właśnie pliku

Po załadowaniu Assembly, możemy odczytać takie informacje jak atrybuty całego assemby, a także dostępne Typy danych.

Operacje na typach

Kiedy dostaniemy interesujący nas typ danych również możemy odczytać jego metadane. Refleksja umożliwia nam odczyt informacji na temat konstruktorów, pól, właściwości oraz metod.

Poniższy przykład obrazuje jak załadować i odczytać wszystkie właściwości i typy z danego assembly.

 

Jak widzimy odczyt metadanych jest prosty, kompletny projekt możemy znaleść na moim GitHub-ie https://github.com/Matejkos/BlogProjects/

W następnym poście postaram się opowiedzieć, o tym jak za pomocą refleksji tworzyć obiekty, zmieniać ich właściwości czy też wywoływać metody.

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *