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
public
abstract
lubprivate
virtual
) 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
lubvirtual
) 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
(GetType
w 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.