Type.GetMember Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli Typeöğesinin belirtilen üyelerini alır.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| GetMember(String) |
Belirtilen ada sahip genel üyeleri arar. |
| GetMember(String, BindingFlags) |
Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üyeleri arar. |
| GetMember(String, MemberTypes, BindingFlags) |
Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üye türünün belirtilen üyelerini arar. |
GetMember(String)
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Belirtilen ada sahip genel üyeleri arar.
public:
cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public System.Reflection.MemberInfo[] GetMember(string name);
public System.Reflection.MemberInfo[] GetMember(string name);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
member this.GetMember : string -> System.Reflection.MemberInfo[]
member this.GetMember : string -> System.Reflection.MemberInfo[]
abstract member GetMember : string -> System.Reflection.MemberInfo[]
override this.GetMember : string -> System.Reflection.MemberInfo[]
Public Function GetMember (name As String) As MemberInfo()
Parametreler
- name
- String
Alınacak ortak üyelerin adını içeren dize.
Döndürülenler
Belirtilen ada sahip ortak üyeleri temsil eden bir nesne dizisi MemberInfo ; aksi takdirde boş bir dizi.
Uygulamalar
- Öznitelikler
Özel durumlar
name, null'e eşittir.
Örnekler
Aşağıdaki örnek, C harfiyle başlayan sınıfın String tüm üyelerini görüntüler.
using System;
using System.Security;
using System.Reflection;
public class MyMemberSample
{
public static void Main()
{
MyMemberSample myClass = new MyMemberSample();
try
{
myClass.GetMemberInfo();
myClass.GetPublicStaticMemberInfo();
myClass.GetPublicInstanceMethodMemberInfo();
}
catch(ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
catch(NotSupportedException e)
{
Console.WriteLine("NotSupportedException occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
catch(SecurityException e)
{
Console.WriteLine("SecurityException occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception occurred.");
Console.WriteLine("Source: " + e.Source);
Console.WriteLine("Message: " + e.Message);
}
}
public void GetMemberInfo()
{
String myString = "GetMember_String";
Type myType = myString.GetType();
// Get the members for myString starting with the letter C.
MemberInfo[] myMembers = myType.GetMember("C*");
if(myMembers.Length > 0)
{
Console.WriteLine("\nThe member(s) starting with the letter C for type {0}:", myType);
for(int index=0; index < myMembers.Length; index++)
Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
}
else
{
Console.WriteLine("No members match the search criteria.");
}
}
open System
open System.Security
open System.Reflection
type MyMemberSample() =
member _.GetMemberInfo() =
let myString = "GetMember_String"
let myType = myString.GetType()
// Get the members for myString starting with the letter C.
let myMembers = myType.GetMember "C*"
if myMembers.Length > 0 then
printfn $"\nThe member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
member _.GetPublicStaticMemberInfo() =
let myString = "GetMember_String_BindingFlag"
let myType = myString.GetType()
// Get the public static members for the class myString starting with the letter C.
let myMembers = myType.GetMember("C*", BindingFlags.Public ||| BindingFlags.Static)
if myMembers.Length > 0 then
printfn $"\nThe public static member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
member _.GetPublicInstanceMethodMemberInfo() =
let myString = "GetMember_String_MemberType_BindingFlag"
let myType = myString.GetType()
// Get the public instance methods for myString starting with the letter C.
let myMembers = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Instance)
if myMembers.Length > 0 then
printfn $"\nThe public instance method(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
let myClass = MyMemberSample()
try
myClass.GetMemberInfo()
myClass.GetPublicStaticMemberInfo()
myClass.GetPublicInstanceMethodMemberInfo()
with
| :? ArgumentNullException as e ->
printfn "ArgumentNullException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| :? NotSupportedException as e ->
printfn $"NotSupportedException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| :? SecurityException as e ->
printfn "SecurityException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| e ->
printfn "Exception occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
Imports System.Security
Imports System.Reflection
Public Class MyMemberSample
Public Shared Sub Main()
Dim [myClass] As New MyMemberSample()
Try
[myClass].GetMemberInfo()
[myClass].GetPublicStaticMemberInfo()
[myClass].GetPublicInstanceMethodMemberInfo()
Catch e As ArgumentNullException
Console.WriteLine("ArgumentNullException occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
Catch e As NotSupportedException
Console.WriteLine("NotSupportedException occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
Catch e As SecurityException
Console.WriteLine("SecurityException occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
Catch e As Exception
Console.WriteLine("Exception occurred.")
Console.WriteLine(("Source: " + e.Source))
Console.WriteLine(("Message: " + e.Message))
End Try
End Sub
Public Sub GetMemberInfo()
Dim myString As [String] = "GetMember_String"
Dim myType As Type = myString.GetType()
' Get the members for myString starting with the letter C.
Dim myMembers As MemberInfo() = myType.GetMember("C*")
If myMembers.Length > 0 Then
Console.WriteLine(ControlChars.Cr + "The member(s) starting with the letter C for type {0}:", myType)
Dim index As Integer
For index = 0 To myMembers.Length - 1
Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
Next index
Else
Console.WriteLine("No members match the search criteria.")
End If
End Sub
Açıklamalar
name araması büyük/küçük harfe duyarlıdır. Arama, genel statik ve genel örnek üyelerini içerir.
Üyeler özellikler, yöntemler, alanlar, olaylar vb. içerir.
.NET 6 ve önceki sürümlerinde, GetMember yöntemi üyeleri alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun üyelerin döndürülme sırasına bağlı olmaması gerekir, çünkü bu sipariş değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Bu yöntem aşırı yüklemesi sınıf başlatıcılarını (statik oluşturucu) bulamaz. Sınıf başlatıcılarını bulmak için, öğesini alan BindingFlagsve ( Visual Basic'te)BindingFlags.StaticBindingFlags.NonPublicOr belirten BindingFlags.Static | BindingFlags.NonPublic bir aşırı yükleme kullanın. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.
Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından döndürülen temel sınıf üyeleri gösterilmektedir.
| Üye Türü | Static | Statik Olmayan |
|---|---|---|
| Yapıcı | Hayır | Hayır |
| Alan | Hayır | Evet. Alan her zaman isim ve imzaya göre gizli olur. |
| Etkinlik | Uygulanamaz | Yaygın tür sistemi kuralı, özniteliği uygulayan yöntemlerdeki devralma ile aynıdır. Yansıma, özellikleri ada ve imzaya göre gizle olarak ele alır. Aşağıdaki 2. nota bakın. |
| Yöntem | Hayır | Evet. Bir yöntem (hem sanal hem de sanal olmayan) isim odaklı gizleme veya isim ve imza odaklı gizleme olabilir. |
| İç İçe Yerleştirilmiş Tür | Hayır | Hayır |
| Mülkiyet | Uygulanamaz | Yaygın tür sistemi kuralı, özniteliği uygulayan yöntemlerdeki devralma ile aynıdır. Yansıma, özellikleri ada ve imzaya göre gizle olarak ele alır. Aşağıdaki 2. nota bakın. |
Ad ve imzaya göre gizleme, özel değiştiriciler, dönüş türleri, parametre türleri, sentineller ve yönetilmeyen çağırma kuralları dahil olmak üzere, imzanın tüm parçalarını dikkate alır. Bu ikili karşılaştırmadır.
Yansıma için, özellikler ve olaylar ada ve imzaya göre gizlenir. Temel sınıfta hem get hem de set erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir get erişimcisi varsa, türetilmiş sınıf özelliği temel sınıf özelliğini gizler ve temel sınıfta ayarlayıcıya erişemezsiniz.
Özel öznitelikler ortak tür sisteminin bir parçası değildir.
Geçerli Type yapılandırılmış bir genel türü temsil ediyorsa, bu yöntem tür parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek MemberInfo'i döndürür.
Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının üyelerini veya sınıf kısıtlaması yoksa öğesinin Object üyelerini arar.
Uyarı
Genel yöntemler için, türü bağımsız değişkenlerini içinde eklemeyin name. Örneğin, C# kodu GetMember("MyMethod<int>") türünde tek bir genel bağımsız değişkeni intolan adlı MyMethod bir yöntem yerine "MyMethod<int>" metin adına sahip bir üyeyi arar.
Ayrıca bkz.
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Şunlara uygulanır
GetMember(String, BindingFlags)
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üyeleri arar.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, bindingAttr As BindingFlags) As MemberInfo()
Parametreler
- name
- String
Alınacak üyelerin adını içeren dize.
- bindingAttr
- BindingFlags
Aramanın nasıl yapıldığını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.
-veya-
Default boş bir dizi döndürmek için.
Döndürülenler
Belirtilen ada sahip ortak üyeleri temsil eden bir nesne dizisi MemberInfo ; aksi takdirde boş bir dizi.
Uygulamalar
- Öznitelikler
Özel durumlar
name, null'e eşittir.
Örnekler
Aşağıdaki örnek, C harfiyle başlayan sınıfın myString tüm genel statik üyelerini görüntüler.
public void GetPublicStaticMemberInfo()
{
String myString = "GetMember_String_BindingFlag";
Type myType = myString.GetType();
// Get the public static members for the class myString starting with the letter C.
MemberInfo[] myMembers = myType.GetMember("C*",
BindingFlags.Public |BindingFlags.Static);
if(myMembers.Length > 0)
{
Console.WriteLine("\nThe public static member(s) starting with the letter C for type {0}:", myType);
for(int index=0; index < myMembers.Length; index++)
Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
}
else
{
Console.WriteLine("No members match the search criteria.");
}
}
member _.GetPublicStaticMemberInfo() =
let myString = "GetMember_String_BindingFlag"
let myType = myString.GetType()
// Get the public static members for the class myString starting with the letter C.
let myMembers = myType.GetMember("C*", BindingFlags.Public ||| BindingFlags.Static)
if myMembers.Length > 0 then
printfn $"\nThe public static member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
Public Sub GetPublicStaticMemberInfo()
Dim myString As [String] = "GetMember_String_BindingFlag"
Dim myType As Type = myString.GetType()
' Get the public static members for the class myString starting with the letter C.
Dim myMembers As MemberInfo() = myType.GetMember("C*", BindingFlags.Public Or BindingFlags.Static)
If myMembers.Length > 0 Then
Console.WriteLine(ControlChars.Cr + "The public static member(s) starting with the letter C for type {0}:", myType)
Dim index As Integer
For index = 0 To myMembers.Length - 1
Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
Next index
Else
Console.WriteLine("No members match the search criteria.")
End If
End Sub
Açıklamalar
Bu yöntem türetilmiş bir sınıf tarafından geçersiz kılınabilir.
Üyeler özellikler, yöntemler, alanlar, olaylar vb. içerir.
.NET 6 ve önceki sürümlerinde, GetMember yöntemi üyeleri alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun üyelerin döndürülme sırasına bağlı olmaması gerekir, çünkü bu sipariş değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi üyelerin dahil edilebileceğini tanımlamak için kullanılabilir:
İade almak için ya
BindingFlags.Instanceya daBindingFlags.Staticbelirtmelisiniz.Genel üyeleri aramaya dahil etmek için belirtin
BindingFlags.Public.Genel olmayan üyeleri (özel, iç ve korumalı üyeler) aramaya dahil etmek için belirtin
BindingFlags.NonPublic.Belirtin
BindingFlags.FlattenHierarchy:publicveprotectedstatik üyeleri hiyerarşiye eklemek için; türetilmiş sınıflardakiprivatestatik üyeler dahil edilmez.
Aramanın çalışma biçimini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:
BindingFlags.IgnoreCaseöğesinin büyük/küçük harf durumununameyoksaymak için.BindingFlags.DeclaredOnlyyalnızca üzerinde Typebildirilen üyeleri aramak için yalnızca devralınan üyeleri aramaz.
Daha fazla bilgi için bkz. System.Reflection.BindingFlags.
Bu yöntem aşırı yüklemesini kullanarak sınıf başlatıcısını (statik oluşturucu) almak için için , ve | BindingFlags.StaticBindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic Visual Basic'te) için namebindingAttr"statik oluşturucu" belirtmeniz gerekir. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.
Geçerli Type yapılandırılmış bir genel türü temsil ediyorsa, bu yöntem tür parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek MemberInfo'i döndürür.
Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının üyelerini veya sınıf kısıtlaması yoksa öğesinin Object üyelerini arar.
Uyarı
Genel yöntemler için, türü bağımsız değişkenlerini içinde eklemeyin name. Örneğin, C# kodu GetMember("MyMethod<int>") türünde tek bir genel bağımsız değişkeni intolan adlı MyMethod bir yöntem yerine "MyMethod<int>" metin adına sahip bir üyeyi arar.
Ayrıca bkz.
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Şunlara uygulanır
GetMember(String, MemberTypes, BindingFlags)
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
- Kaynak:
- Type.cs
Belirtilen bağlama kısıtlamalarını kullanarak belirtilen üye türünün belirtilen üyelerini arar.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::MemberTypes type, System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, type As MemberTypes, bindingAttr As BindingFlags) As MemberInfo()
Parametreler
- name
- String
Alınacak üyelerin adını içeren dize.
- type
- MemberTypes
Aranacak değer.
- bindingAttr
- BindingFlags
Aramanın nasıl yapıldığını belirten numaralandırma değerlerinin bit düzeyinde birleşimi.
-veya-
Default boş bir dizi döndürmek için.
Döndürülenler
Belirtilen ada sahip ortak üyeleri temsil eden bir nesne dizisi MemberInfo ; aksi takdirde boş bir dizi.
Uygulamalar
- Öznitelikler
Özel durumlar
name, null'e eşittir.
Türetilmiş bir sınıf bir uygulama sağlamalıdır.
Örnekler
Aşağıdaki örnek, C harfiyle başlayan sınıfın myString tüm yöntemlerini görüntüler.
public void GetPublicInstanceMethodMemberInfo()
{
String myString = "GetMember_String_MemberType_BindingFlag";
Type myType = myString.GetType();
// Get the public instance methods for myString starting with the letter C.
MemberInfo[] myMembers = myType.GetMember("C*", MemberTypes.Method,
BindingFlags.Public | BindingFlags.Instance);
if(myMembers.Length > 0)
{
Console.WriteLine("\nThe public instance method(s) starting with the letter C for type {0}:", myType);
for(int index=0; index < myMembers.Length; index++)
Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
}
else
{
Console.WriteLine("No members match the search criteria.");
}
}
}
member _.GetPublicInstanceMethodMemberInfo() =
let myString = "GetMember_String_MemberType_BindingFlag"
let myType = myString.GetType()
// Get the public instance methods for myString starting with the letter C.
let myMembers = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Instance)
if myMembers.Length > 0 then
printfn $"\nThe public instance method(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
Public Sub GetPublicInstanceMethodMemberInfo()
Dim myString As [String] = "GetMember_String_MemberType_BindingFlag"
Dim myType As Type = myString.GetType()
' Get the public instance methods for myString starting with the letter C.
Dim myMembers As MemberInfo() = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public Or BindingFlags.Instance)
If myMembers.Length > 0 Then
Console.WriteLine(ControlChars.Cr + "The public instance method(s) starting with the letter C for type {0}:", myType)
Dim index As Integer
For index = 0 To myMembers.Length - 1
Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
Next index
Else
Console.WriteLine("No members match the search criteria.")
End If
End Sub
End Class
Açıklamalar
Üyeler özellikler, yöntemler, alanlar, olaylar vb. içerir.
.NET 6 ve önceki sürümlerinde, GetMember yöntemi üyeleri alfabetik veya bildirim sırası gibi belirli bir sırada döndürmez. Kodunuzun üyelerin döndürülme sırasına bağlı olmaması gerekir, çünkü bu sipariş değişir. Bununla birlikte, .NET 7'den başlayarak sıralama, derlemedeki meta veri sıralamasını temel alarak belirleyicidir.
Aşağıdaki BindingFlags filtre bayrakları, aramaya hangi üyelerin dahil edilebileceğini tanımlamak için kullanılabilir:
İade almak için ya
BindingFlags.Instanceya daBindingFlags.Staticbelirtmelisiniz.Genel üyeleri aramaya dahil etmek için belirtin
BindingFlags.Public.Genel olmayan üyeleri (özel, iç ve korumalı üyeler) aramaya dahil etmek için belirtin
BindingFlags.NonPublic.Belirtin
BindingFlags.FlattenHierarchy:publicveprotectedstatik üyeleri hiyerarşiye eklemek için; türetilmiş sınıflardakiprivatestatik üyeler dahil edilmez.
Aramanın çalışma biçimini değiştirmek için aşağıdaki BindingFlags değiştirici bayraklar kullanılabilir:
BindingFlags.IgnoreCaseöğesinin büyük/küçük harf durumununameyoksaymak için.BindingFlags.DeclaredOnlyyalnızca üzerinde Typebildirilen üyeleri aramak için yalnızca devralınan üyeleri aramaz.
Daha fazla bilgi için bkz. System.Reflection.BindingFlags.
Bu yöntem aşırı yüklemesini kullanarak sınıf başlatıcısını (statik oluşturucu) almak için için için , typeMemberTypes.Constructor ve | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublic Visual Basic'te) için namebindingAttr"statik oluşturucu" belirtmeniz gerekir. Ayrıca özelliğini kullanarak sınıf başlatıcısını TypeInitializer da alabilirsiniz.
Geçerli Type yapılandırılmış bir genel türü temsil ediyorsa, bu yöntem tür parametrelerini uygun tür bağımsız değişkenleriyle değiştirerek MemberInfo'i döndürür.
Geçerli Type , genel bir tür veya genel yöntemin tanımında tür parametresini temsil ederse, bu yöntem sınıf kısıtlamasının üyelerini veya sınıf kısıtlaması yoksa öğesinin Object üyelerini arar.
Uyarı
Genel yöntemler için, türü bağımsız değişkenlerini içinde eklemeyin name. Örneğin, C# kodu GetMember("MyMethod<int>") türünde tek bir genel bağımsız değişkeni intolan adlı MyMethod bir yöntem yerine "MyMethod<int>" metin adına sahip bir üyeyi arar.
Ayrıca bkz.
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)