Odbicie w programie .NET

Klasy w przestrzeni nazw, wraz z , umożliwiają uzyskiwanie informacji o załadowanych zestawach i typach zdefiniowanych w nich, takich jak System.Reflection System.Type klasy, interfejsyi typy wartości (czyli struktury i wyliczenia ). Można również użyć odbicia, aby tworzyć wystąpienia typu w czasie uruchamiania oraz wywoływać je i uzyskać do nich dostęp. Aby uzyskać tematy dotyczące konkretnych aspektów odbicia, zobacz Tematy pokrewne na końcu tego przeglądu.

Modułu ładującego środowiska uruchomieniowego języka wspólnego zarządza domenamiaplikacji, które tworzą zdefiniowane granice wokół obiektów o tym samym zakresie aplikacji. To zarządzanie obejmuje ładowanie każdego zestawu do odpowiedniej domeny aplikacji i kontrolowanie układu pamięci hierarchii typów w każdym zestawie.

Zestawy zawierają moduły, moduły zawierają typy, a typy zawierają składowe. Odbicie zapewnia obiekty, które hermetyzują zestawy, moduły i typy. Można użyć odbicia, aby dynamicznie utworzyć wystąpienie typu, powiązać typ z istniejącym obiektem lub pobrać typ z istniejącego obiektu. Następnie możesz wywołać metody typu lub uzyskać dostęp do jego pól i właściwości. Typowe zastosowania odbicia są następujące:

  • Służy do definiowania i ładowania zestawów, ładowania modułów wymienionych w manifeście zestawu, lokalizowania typu z tego zestawu i Assembly tworzenia jego wystąpienia.

  • Umożliwia Module odnajdywanie informacji, takich jak zestaw zawierający moduł i klasy w module . Możesz również pobrać wszystkie metody globalne lub inne konkretne, nieglobalne metody zdefiniowane w module.

  • Umożliwia odnajdywanie informacji, takich jak nazwa, parametry, modyfikatory dostępu (takie jak lub ) i szczegóły ConstructorInfo public implementacji (takie jak lub ) private abstract virtual konstruktora. Użyj metody GetConstructors lub metody , aby wywołać określony GetConstructor Type konstruktor.

  • Służy do odnajdywania informacji, takich jak nazwa, typ zwracany, parametry, modyfikatory dostępu (takie jak lub ) oraz szczegóły implementacji (takie jak MethodInfo public lub ) private abstract virtual metody. Użyj metody GetMethods lub metody , aby wywołać określoną GetMethod Type metodę.

  • Umożliwia odnajdywanie informacji, takich jak nazwa, modyfikatory dostępu (takie jak lub ) i szczegóły implementacji (takie jak ) pola, oraz uzyskiwanie lub FieldInfo public ustawianie wartości private static pól.

  • Umożliwia odnajdywanie informacji, takich jak nazwa, typ danych procedury obsługi zdarzeń, atrybuty niestandardowe, typ deklarowania i typ odzwierciedlony zdarzenia, a także dodawanie lub usuwanie programów obsługi EventInfo zdarzeń.

  • Użyj funkcji do odnajdywania informacji, takich jak nazwa, typ danych, typ deklarowania, typ odzwierciedlony, stan tylko do odczytu lub zapisywalny właściwości, a także w celu uzyskania lub ustawienia PropertyInfo wartości właściwości.

  • Służy do odnajdywania informacji, takich jak nazwa parametru, typ danych, czy parametr jest parametrem wejściowym lub wyjściowym, oraz położenie parametru w ParameterInfo sygnaturze metody.

  • Umożliwia odnajdywanie informacji o atrybutach niestandardowych podczas pracy w kontekście tylko CustomAttributeData odbicia domeny aplikacji. CustomAttributeData Umożliwia badanie atrybutów bez tworzenia ich wystąpień. Klasy przestrzeni nazw System.Reflection.Emit zapewniają wyspecjalizowaną formę odbicia, która umożliwia tworzenie typów w czasie uruchamiania.

Odbicie może być również używane do tworzenia aplikacji nazywanych przeglądarkami typów, które umożliwiają użytkownikom wybieranie typów, a następnie wyświetlanie informacji o tych typach.

Istnieją inne zastosowania odbicia. Kompilatory języków takich jak JScript używają odbicia do konstruowania tabel symboli. Klasy w przestrzeni nazw System.Runtime.Serialization używają odbicia, aby uzyskać dostęp do danych i określić, które pola mają być utrwalane. Klasy w przestrzeni nazw System.Runtime.Remoting używają odbicia pośrednio za pośrednictwem serializacji.

Typy środowiska uruchomieniowego w odbicia

Odbicie udostępnia klasy, takie Type jak i , do MethodInfo reprezentowania typów, składowych, parametrów i innych jednostek kodu. Jednak w przypadku używania odbicia nie pracujesz bezpośrednio z tymi klasami, z których większość jest abstrakcyjna (w MustInherit Visual Basic). Zamiast tego pracujesz z typami dostarczanymi przez środowisko uruchomieniowe języka wspólnego (CLR).

Na przykład w przypadku użycia operatora języka C# (w Visual Basic) do uzyskania obiektu obiekt typeof GetType jest w naprawdę Type obiektem RuntimeType . RuntimeType Metoda pochodzi od metod abstrakcyjnych i udostępnia Type implementacje wszystkich metod abstrakcyjnych.

Te klasy środowiska uruchomieniowego to internal ( Friend w Visual Basic). Nie są one udokumentowane oddzielnie od klas bazowych, ponieważ ich zachowanie jest opisane w dokumentacji klasy bazowej.

Tytuł Opis
Wyświetlanie informacji o typie Opisuje klasę i zawiera przykłady kodu ilustrujące sposób użycia z kilkoma klasami odbicia w celu uzyskania informacji o Type konstruktorach, metodach, Type polach, właściwościach i zdarzeniach.
Odbicie i typy ogólne Wyjaśnia, jak odbicie obsługuje parametry typu i argumenty typu typów typów ogólnych i metod ogólnych.
Zagadnienia dotyczące zabezpieczeń dla odbicia Opisuje reguły, które określają, w jakim stopniu odbicie może służyć do odnajdywania informacji o typach i typach dostępu.
Dynamiczne ładowanie i używanie typów Opisuje interfejs powiązania niestandardowego odbicia, który obsługuje późne powiązanie.
Jak załadować zestawy do kontekstu tylko odbicia Opisuje kontekst ładowania tylko odbicia. Pokazuje, jak załadować zestaw, jak przetestować kontekst i jak zbadać atrybuty zastosowane do zestawu w kontekście tylko odbicia.
Instaluj inspekcję zawartości zestawu przy użyciu elementu MetadataLoadContext Załaduj i sprawdź zestawy przy MetadataLoadContext użyciu .
Uzyskiwanie dostępu do atrybutów niestandardowych Demonstruje użycie odbicia w celu zapytania o istnienie atrybutu i wartości.
Określanie w pełni kwalifikowanych nazw typów Opis formatu w pełni kwalifikowanych nazw typów w postaci Backus-Naur (BNF) oraz składni wymaganej do określania znaków specjalnych, nazw zestawu, wskaźników, odwołań i tablic.
Jak podpiąć delegata przy użyciu odbicia Wyjaśnia, jak utworzyć delegata dla metody i podpiąć delegata do zdarzenia. Wyjaśnia, jak utworzyć metodę obsługi zdarzeń w czasie działania przy użyciu metody DynamicMethod .
Emitowanie dynamicznych metod i zestawów Wyjaśnia sposób generowania zestawów dynamicznych i metod dynamicznych.

Tematy pomocy