Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
System.Type sınıfı, yansıma için merkezi bir sınıftır. Ortak dil çalışma zamanı, yansıma bir türü talep ettiğinde yüklenen tür için Type oluşturur. Bir nesnenin yöntemlerini, alanlarını, özelliklerini ve iç içe yerleştirilmiş sınıflarını kullanarak Type bu türle ilgili her şeyi bulabilirsiniz.
Assembly.GetType veya Assembly.GetTypes kullanarak yüklenmemiş derlemelerden nesneleri almak için istediğiniz türün veya türlerin adını geçirin. Zaten yüklenmiş bir derlemeden Type.GetType nesnelerini almak için Type kullanın.
Module.GetType ve Module.GetTypes kullanarak modül Type nesnelerini alın.
Uyarı
Genel türleri ve yöntemleri incelemek ve işlemek istiyorsanız, Yansıma ve Genel Türler ve Nasıl Yapılır: Genel Türleri Yansıma ile İnceleme ve Örnekleme bölümünde sağlanan ek bilgilere bakın.
Aşağıdaki örnek, bir derleme için Assembly nesnesini ve modülünü almak için gerekli söz dizimini gösterir.
// Gets the mscorlib assembly in which the object is defined.
Assembly a = typeof(object).Module.Assembly;
' Gets the mscorlib assembly in which the object is defined.
Dim a As Assembly = GetType(Object).Module.Assembly
Aşağıdaki örnek, Type nesnelerini yüklenen bir derlemeden almayı göstermektedir.
// Loads an assembly using its file name.
Assembly a = Assembly.LoadFrom("MyExe.exe");
// Gets the type names from the assembly.
Type[] types2 = a.GetTypes();
foreach (Type t in types2)
{
Console.WriteLine(t.FullName);
}
' Loads an assembly using its file name.
Dim a As Assembly = Assembly.LoadFrom("MyExe.exe")
' Gets the type names from the assembly.
Dim types2() As Type = a.GetTypes()
For Each t As Type In types2
Console.WriteLine(t.FullName)
Next t
Bir Type elde ettiğinizde, bu türün üyeleri hakkında bilgi bulmanın birçok yolu vardır. Örneğin, geçerli türün üyelerinden her birini açıklayan nesnelerden oluşan bir dizi elde etmek için Type.GetMembers yöntemini çağırarak türün tüm üyeleri hakkında bilgi edinebilirsiniz.
Ayrıca, ada göre belirttiğiniz bir veya daha fazla oluşturucu, yöntem, olay, alan veya özellik hakkında bilgi almak için Type sınıfındaki yöntemleri de kullanabilirsiniz. Örneğin, Type.GetConstructor geçerli sınıfın belirli bir oluşturucuyu kapsüller.
Eğer bir Type varsa, o türü içeren modülü kapsülleyen bir nesneyi elde etmek için Type.Module özelliğini kullanabilirsiniz.
Module.Assembly özelliğini kullanarak modülü içeren derlemeyi kapsülleyen bir nesneyi bulun. Türü kapsülleyen derlemeyi, Type.Assembly özelliğini kullanarak doğrudan alabilirsiniz.
System.Type ve ConstructorInfo
Aşağıdaki örnek, String sınıfı için bir sınıfın oluşturucularının nasıl listeleneceğini göstermektedir.
// This program lists all the public constructors
// of the System.String class.
using System;
using System.Reflection;
class ListMembers
{
public static void Main()
{
Type t = typeof(System.String);
Console.WriteLine($"Listing all the public constructors of the {t} type");
// Constructors.
ConstructorInfo[] ci = t.GetConstructors(BindingFlags.Public | BindingFlags.Instance);
Console.WriteLine("//Constructors");
PrintMembers(ci);
}
public static void PrintMembers(MemberInfo[] ms)
{
foreach (MemberInfo m in ms)
{
Console.WriteLine($"{" "}{m}");
}
Console.WriteLine();
}
}
' This program lists all the public constructors
' of the System.String class.
Imports System.Reflection
Class ListMembers
Public Shared Sub Main()
Dim t As Type = GetType(String)
Console.WriteLine("Listing all the public constructors of the {0} type", t)
' Constructors.
Dim ci As ConstructorInfo() = t.GetConstructors((BindingFlags.Public Or BindingFlags.Instance))
Console.WriteLine("//Constructors")
PrintMembers(ci)
End Sub
Public Shared Sub PrintMembers(ms() As MemberInfo)
Dim m As MemberInfo
For Each m In ms
Console.WriteLine("{0}{1}", " ", m)
Next m
Console.WriteLine()
End Sub
End Class
MemberInfo, MethodInfo, FieldInfo ve PropertyInfo
, MemberInfoMethodInfo, veya FieldInfo nesnelerini kullanarak PropertyInfotürün yöntemleri, özellikleri, olayları ve alanları hakkında bilgi edinin.
Aşağıdaki örnek, MemberInfo sınıfındaki üye sayısını listelemek için System.IO.File kullanır ve sınıfın görünürlüğünü belirlemek için IsPublic özelliğini kullanır.
using System;
using System.IO;
using System.Reflection;
class MyMemberInfo
{
public static void Main()
{
Console.WriteLine ("\nReflection.MemberInfo");
// Gets the Type and MemberInfo.
Type myType = Type.GetType("System.IO.File");
MemberInfo[] myMemberInfoArray = myType.GetMembers();
// Gets and displays the DeclaringType method.
Console.WriteLine($"\nThere are {myMemberInfoArray.Length} members in {myType.FullName}.");
Console.WriteLine($"{myType.FullName}.");
if (myType.IsPublic)
{
Console.WriteLine($"{myType.FullName} is public.");
}
}
}
Imports System.IO
Imports System.Reflection
Class MyMemberInfo
Public Shared Sub Main()
Console.WriteLine("\nReflection.MemberInfo")
' Gets the Type and MemberInfo.
Dim myType As Type = Type.GetType("System.IO.File")
Dim myMemberInfoArray() As MemberInfo = myType.GetMembers()
' Gets and displays the DeclaringType method.
Console.WriteLine("\nThere are {0} members in {1}.",
myMemberInfoArray.Length, myType.FullName)
Console.WriteLine("{0}.", myType.FullName)
If myType.IsPublic
Console.WriteLine("{0} is public.", myType.FullName)
End If
End Sub
End Class
Aşağıdaki örnek, belirtilen üyenin türünü araştırır. Sınıfın MemberInfo bir üyesi üzerinde yansıtma gerçekleştirir ve türünü belirtip listeler.
// This code displays information about the GetValue method of FieldInfo.
using System;
using System.Reflection;
class MyMethodInfo
{
public static int Main()
{
Console.WriteLine("Reflection.MethodInfo");
// Gets and displays the Type.
Type myType = Type.GetType("System.Reflection.FieldInfo");
// Specifies the member for which you want type information.
MethodInfo myMethodInfo = myType.GetMethod("GetValue");
Console.WriteLine(myType.FullName + "." + myMethodInfo.Name);
// Gets and displays the MemberType property.
MemberTypes myMemberTypes = myMethodInfo.MemberType;
if (MemberTypes.Constructor == myMemberTypes)
{
Console.WriteLine("MemberType is of type All");
}
else if (MemberTypes.Custom == myMemberTypes)
{
Console.WriteLine("MemberType is of type Custom");
}
else if (MemberTypes.Event == myMemberTypes)
{
Console.WriteLine("MemberType is of type Event");
}
else if (MemberTypes.Field == myMemberTypes)
{
Console.WriteLine("MemberType is of type Field");
}
else if (MemberTypes.Method == myMemberTypes)
{
Console.WriteLine("MemberType is of type Method");
}
else if (MemberTypes.Property == myMemberTypes)
{
Console.WriteLine("MemberType is of type Property");
}
else if (MemberTypes.TypeInfo == myMemberTypes)
{
Console.WriteLine("MemberType is of type TypeInfo");
}
return 0;
}
}
' This code displays information about the GetValue method of FieldInfo.
Imports System.Reflection
Class MyMethodInfo
Public Shared Sub Main()
Console.WriteLine("Reflection.MethodInfo")
' Gets and displays the Type.
Dim myType As Type = Type.GetType("System.Reflection.FieldInfo")
' Specifies the member for which you want type information.
Dim myMethodInfo As MethodInfo = myType.GetMethod("GetValue")
Console.WriteLine((myType.FullName & "." & myMethodInfo.Name))
' Gets and displays the MemberType property.
Dim myMemberTypes As MemberTypes = myMethodInfo.MemberType
If MemberTypes.Constructor = myMemberTypes Then
Console.WriteLine("MemberType is of type All")
ElseIf MemberTypes.Custom = myMemberTypes Then
Console.WriteLine("MemberType is of type Custom")
ElseIf MemberTypes.Event = myMemberTypes Then
Console.WriteLine("MemberType is of type Event")
ElseIf MemberTypes.Field = myMemberTypes Then
Console.WriteLine("MemberType is of type Field")
ElseIf MemberTypes.Method = myMemberTypes Then
Console.WriteLine("MemberType is of type Method")
ElseIf MemberTypes.Property = myMemberTypes Then
Console.WriteLine("MemberType is of type Property")
ElseIf MemberTypes.TypeInfo = myMemberTypes Then
Console.WriteLine("MemberType is of type TypeInfo")
End If
Return
End Sub
End Class
Aşağıdaki örnekte, belirtilen sınıfın tüm üyelerini (oluşturucular, alanlar, özellikler, olaylar ve yöntemler) listelemek ve üyeleri statik ve örnek kategorilerine bölmek için tüm Yansıma *Info sınıfları ile BindingFlags birlikte kullanılır.
// This program lists all the members of the
// System.IO.BufferedStream class.
using System;
using System.IO;
using System.Reflection;
class ListMembers
{
public static void Main()
{
// Specifies the class.
Type t = typeof(System.IO.BufferedStream);
Console.WriteLine($"Listing all the members (public and non public) of the {t} type");
// Lists static fields first.
FieldInfo[] fi = t.GetFields(BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine("// Static Fields");
PrintMembers(fi);
// Static properties.
PropertyInfo[] pi = t.GetProperties(BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine("// Static Properties");
PrintMembers(pi);
// Static events.
EventInfo[] ei = t.GetEvents(BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine("// Static Events");
PrintMembers(ei);
// Static methods.
MethodInfo[] mi = t.GetMethods (BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine("// Static Methods");
PrintMembers(mi);
// Constructors.
ConstructorInfo[] ci = t.GetConstructors(BindingFlags.Instance |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine("// Constructors");
PrintMembers(ci);
// Instance fields.
fi = t.GetFields(BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public);
Console.WriteLine("// Instance Fields");
PrintMembers(fi);
// Instance properties.
pi = t.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public);
Console.WriteLine ("// Instance Properties");
PrintMembers(pi);
// Instance events.
ei = t.GetEvents(BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public);
Console.WriteLine("// Instance Events");
PrintMembers(ei);
// Instance methods.
mi = t.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic
| BindingFlags.Public);
Console.WriteLine("// Instance Methods");
PrintMembers(mi);
Console.WriteLine("\r\nPress ENTER to exit.");
Console.Read();
}
public static void PrintMembers (MemberInfo [] ms)
{
foreach (MemberInfo m in ms)
{
Console.WriteLine ("{0}{1}", " ", m);
}
Console.WriteLine();
}
}
' This program lists all the members of the
' System.IO.BufferedStream class.
Imports System.IO
Imports System.Reflection
Class ListMembers
Public Shared Sub Main()
' Specifies the class.
Dim t As Type = GetType(System.IO.BufferedStream)
Console.WriteLine("Listing all the members (public and non public) of the {0} type", t)
' Lists static fields first.
Dim fi As FieldInfo() = t.GetFields((BindingFlags.Static Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Static Fields")
PrintMembers(fi)
' Static properties.
Dim pi As PropertyInfo() = t.GetProperties((BindingFlags.Static Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Static Properties")
PrintMembers(pi)
' Static events.
Dim ei As EventInfo() = t.GetEvents((BindingFlags.Static Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Static Events")
PrintMembers(ei)
' Static methods.
Dim mi As MethodInfo() = t.GetMethods((BindingFlags.Static Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Static Methods")
PrintMembers(mi)
' Constructors.
Dim ci As ConstructorInfo() = t.GetConstructors((BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Constructors")
PrintMembers(ci)
' Instance fields.
fi = t.GetFields((BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Instance Fields")
PrintMembers(fi)
' Instance properties.
pi = t.GetProperties((BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Instance Properties")
PrintMembers(pi)
' Instance events.
ei = t.GetEvents((BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Instance Events")
PrintMembers(ei)
' Instance methods.
mi = t.GetMethods((BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public))
Console.WriteLine("// Instance Methods")
PrintMembers(mi)
Console.WriteLine(ControlChars.CrLf & "Press ENTER to exit.")
Console.Read()
End Sub
Public Shared Sub PrintMembers(ms() As MemberInfo)
Dim m As MemberInfo
For Each m In ms
Console.WriteLine("{0}{1}", " ", m)
Next m
Console.WriteLine()
End Sub
End Class