Udostępnij za pośrednictwem


Emocje ion na platformie .NET

Klasy w System.Reflection przestrzeni nazw wraz z System.Typeprogramem umożliwiają uzyskiwanie informacji o załadowanych zestawach i typach zdefiniowanych w nich, takich jak klasy, interfejsy i typy wartości (czyli struktury i wyliczenia). Można również użyć odbicia, aby utworzyć wystąpienia typu w czasie wykonywania oraz wywołać je i uzyskać do nich dostęp.

Zestawy zawierają moduły, moduły zawierają typy i typy zawierające elementy członkowskie. Emocje ion udostępnia 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żna wywołać metody typu lub uzyskać dostęp do jego pól i właściwości. Typowe zastosowania odbicia obejmują następujące elementy:

  • Służy Assembly do definiowania i ładowania zestawów, ładowania modułów wymienionych w manifeście zestawu oraz lokalizowania typu z tego zestawu i tworzenia wystąpienia.
  • Służy Module do odnajdywania informacji, takich jak zestaw zawierający moduł i klasy w module. Możesz również pobrać wszystkie metody globalne lub inne specyficzne, nieglobalne metody zdefiniowane w module.
  • Służy ConstructorInfo do odnajdywania informacji, takich jak nazwa, parametry, modyfikatory dostępu (takie jak lub ) i szczegóły implementacji (takie jak publicabstract lub privatevirtual) konstruktora. GetConstructors Użyj metody lub GetConstructor , Type aby wywołać określonego konstruktora.
  • Służy MethodInfo do odnajdywania informacji, takich jak nazwa, typ zwracany, parametry, modyfikatory dostępu i szczegóły implementacji (takie jak abstract lub virtual) metody. GetMethods Użyj metody lub GetMethod , Type aby wywołać określoną metodę.
  • Służy FieldInfo do odnajdywania informacji, takich jak nazwa, modyfikatory dostępu i szczegóły implementacji (takie jak static) pola, oraz uzyskiwanie lub ustawianie wartości pól.
  • Służy EventInfo do odnajdywania informacji, takich jak nazwa, typ danych programu obsługi zdarzeń, atrybuty niestandardowe, typ deklarowania i odzwierciedlany typ zdarzenia oraz dodawanie lub usuwanie procedur obsługi zdarzeń.
  • Służy PropertyInfo do odnajdywania informacji, takich jak nazwa, typ danych, typ deklarowania, typ odzwierciedlony oraz stan właściwości tylko do odczytu lub zapisywalny oraz pobieranie lub ustawianie wartości właściwości.
  • Służy ParameterInfo do odnajdywania informacji, takich jak nazwa parametru, typ danych, czy parametr jest parametrem wejściowym, czy wyjściowym, oraz położeniem parametru w podpisie metody.
  • Służy CustomAttributeData do odnajdywania informacji o atrybutach niestandardowych podczas pracy w MetadataLoadContext kontekście tylko odbicia (.NET Framework). CustomAttributeData umożliwia analizowanie atrybutów bez tworzenia wystąpień.

Klasy System.Reflection.Emit przestrzeni nazw zapewniają wyspecjalizowaną formę odbicia, która umożliwia tworzenie typów w czasie wykonywania.

Emocje ion może również służyć do tworzenia przeglądarek typów, które umożliwiają użytkownikom wybieranie typów, a następnie wyświetlanie informacji o tych typach.

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

Typy środowiska uruchomieniowego w odbiciu

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

Na przykład w przypadku uzyskania Type obiektu za pomocą operatora języka C# typeof (GetTypew Visual Basic) obiekt jest naprawdę obiektem RuntimeType. RuntimeType metoda pochodzi z Type metody i udostępnia 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.

Odwołanie