Odbicie (C# i Visual Basic)
Odbicie zawiera obiekty (typu Type) opisują zestawów, moduły i typów.Można użyć odbicie dynamicznie utworzyć wystąpienia typu, powiązać typu obiektu, lub pobrać typu z istniejącego obiektu i wywołanie jej metod lub uzyskać dostęp do jego pól i właściwości.Jeśli używasz atrybutów w kodzie odbicie pozwala uzyskać do nich dostęp.Aby uzyskać więcej informacji, zobacz Rozszerzanie metadanych za pomocą atrybutów.
Poniżej przedstawiono prosty przykład odbicia za pomocą metody statycznej GetType - dziedziczone przez wszystkie typy z Object base class - uzyskanie typu zmiennej:
' Using GetType to obtain type information:
Dim i As Integer = 42
Dim type As System.Type = i.GetType()
System.Console.WriteLine(type)
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);
Dane wyjściowe są:
System.Int32
Poniższy przykład używa przed powielaniem w protokole do uzyskania pełnej nazwy zestawu załadowany.
' Using Reflection to get information from an Assembly:
Dim info As System.Reflection.Assembly = GetType(System.Int32).Assembly
System.Console.WriteLine(info)
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);
Dane wyjściowe są:
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
[!UWAGA]
Słowa kluczowe języka C# protected i internal w IL nie mają żadnego znaczenia i nie są używane w odbicie interfejsów API.Są odpowiednie warunki IL rodziny i Zgromadzenia.Aby zidentyfikować internal przy użyciu odbicia, użyj metody IsAssembly właściwości.Aby zidentyfikować protected internal metodę, użyj IsFamilyOrAssembly.
Omówienie odbicia
Odbicia jest przydatne w następujących sytuacjach:
Gdy masz dostęp do atrybutów w metadanych programu.Aby uzyskać więcej informacji, zobacz Pobieranie informacji przechowywanych w atrybutach.
W przypadku rozpatrywania i uruchamianiu tego typu w zestawie.
Do tworzenia nowych typów w czasie wykonywania.Użyj klasy System.Reflection.Emit.
Do wykonywania późnego wiązania, dostęp do metod na typy utworzone w czasie wykonywania.Zobacz temat Dynamiczne ładowanie i używanie typów.
Sekcje pokrewne
Aby uzyskać więcej informacji:
Zobacz też
Koncepcje
Przewodnik programowania w języku C#
Inne zasoby
Przewodnik programowania w Visual Basic