Odbicie na .NET

Klasy w przestrzeni nazw wraz z programem 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 stanowią 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 specyficzne, 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 klasy , 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 odzwierciedlony typ zdarzenia, a także dodawanie lub usuwanie programów obsługi EventInfo zdarzeń.

  • Użyj funkcji , aby odnaleźć informacje, takie jak nazwa, typ danych, typ deklarowania, typ odzwierciedlony i stan tylko do odczytu lub zapisywalny właściwości, oraz uzyskać lub PropertyInfo ustawić 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 kompilowanie typów w czasie uruchamiania.

Odbicie może również służyć 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 jak Type i MethodInfo , do 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 jest typeof GetType w Type ist . 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, które ilustrują 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 ogólnych i metod ogólnych.
Zagadnienia dotyczące zabezpieczeń odbicia Opisuje reguły, które określają, w jakim stopniu odbicie może być używane do odnajdywania informacji o typie 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 badać atrybuty zastosowane do zestawu w kontekście tylko odbicia.
How to: Inspect assembly contents using 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 podłączyć delegata przy użyciu odbicia Wyjaśnia, jak utworzyć delegata dla metody i podłączyć 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 Objaśnia sposób generowania zestawów dynamicznych i metod dynamicznych.

Tematy pomocy