Type.GetMember Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene i membri specificati dell'oggetto Type corrente.
Overload
GetMember(String) |
Cerca i membri pubblici con il nome specificato. |
GetMember(String, BindingFlags) |
Cerca i membri specificati, usando i vincoli di binding specificati. |
GetMember(String, MemberTypes, BindingFlags) |
Cerca i membri specificati del tipo di membro specificato usando i vincoli di associazione specificati. |
GetMember(String)
Cerca i membri pubblici con il nome specificato.
public:
cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public System.Reflection.MemberInfo[] GetMember (string name);
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()
Parametri
- name
- String
Stringa contenente il nome dei membri pubblici da ottenere.
Restituisce
Matrice di oggetti MemberInfo che rappresentano i membri pubblici con il nome specificato, se presenti; in caso contrario, matrice vuota.
Implementazioni
Eccezioni
name
è null
.
Esempio
Nell'esempio seguente vengono visualizzati tutti i membri String
della classe che iniziano con la lettera C.
using namespace System;
using namespace System::Security;
using namespace System::Reflection;
// forward declarations:
void GetMemberInfo();
void GetPublicStaticMemberInfo();
void GetPublicInstanceMethodMemberInfo();
int main()
{
try
{
GetMemberInfo();
GetPublicStaticMemberInfo();
GetPublicInstanceMethodMemberInfo();
}
catch ( ArgumentNullException^ e )
{
Console::WriteLine( "ArgumentNullException occurred." );
Console::WriteLine( "Source: {0}", e->Source );
Console::WriteLine( "Message: {0}", e->Message );
}
catch ( NotSupportedException^ e )
{
Console::WriteLine( "NotSupportedException occurred." );
Console::WriteLine( "Source: {0}", e->Source );
Console::WriteLine( "Message: {0}", e->Message );
}
catch ( SecurityException^ e )
{
Console::WriteLine( "SecurityException occurred." );
Console::WriteLine( "Source: {0}", e->Source );
Console::WriteLine( "Message: {0}", e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception occurred." );
Console::WriteLine( "Source: {0}", e->Source );
Console::WriteLine( "Message: {0}", e->Message );
}
}
void GetMemberInfo()
{
String^ myString = "GetMember_String";
Type^ myType = myString->GetType();
// Get the members for myString starting with the letter C.
array<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 ] );
}
else
Console::WriteLine( "No members match the search criteria." );
}
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.");
}
}
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
Commenti
La ricerca di fa name
distinzione tra maiuscole e minuscole. La ricerca include membri di istanza statici e pubblici.
I membri includono proprietà, metodi, campi, eventi e così via.
Il metodo non restituisce membri in un ordine particolare, ad esempio l'ordine GetMember alfabetico o di dichiarazione. Il codice non deve dipendere dall'ordine in cui vengono restituiti i membri, perché tale ordine varia.
Questo overload del metodo non troverà gli inizializzatori di classe (costruttore statico). Per trovare gli inizializzatori di classe, usare un overload che accetta BindingFlags e specificare | ( in BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic). È anche possibile ottenere l'inizializzatore di classe usando la TypeInitializer proprietà .
Nella tabella seguente vengono illustrati i membri di una classe di base restituiti dai Get
metodi quando si esegue la reflecting su un tipo.
Tipo di membro | Static | Non statico |
---|---|---|
Costruttore | No | No |
Campo | No | Sì. Un campo è sempre hide-by-name-and-signature. |
Evento | Non applicabile | La regola di sistema dei tipi comuni è che l'ereditarietà è uguale a quella dei metodi che implementano la proprietà . La reflection considera le proprietà come hide-by-name-and-signature. Vedere la nota 2 di seguito. |
Metodo | No | Sì. Un metodo (virtuale e non virtuale) può essere hide-by-name o hide-by-name-and-signature. |
Tipo annidato | No | No |
Proprietà | Non applicabile | La regola di sistema dei tipi comuni è che l'ereditarietà è uguale a quella dei metodi che implementano la proprietà . La reflection considera le proprietà come hide-by-name-and-signature. Vedere la nota 2 di seguito. |
Hide-by-name-and-signature considera tutte le parti della firma, inclusi modificatori personalizzati, tipi restituiti, tipi di parametro, sentinel e convenzioni di chiamata non gestite. Si tratta di un confronto binario.
Per la reflection, le proprietà e gli eventi sono hide-by-name-and-signature. Se si dispone di una proprietà con una funzione di accesso get e una funzione di accesso set nella classe di base, ma la classe derivata ha solo una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere al setter nella classe di base.
Gli attributi personalizzati non fanno parte del sistema di tipi comune.
Se l'oggetto corrente rappresenta un tipo generico costruito, questo metodo restituisce con Type i parametri di tipo MemberInfo sostituiti dagli argomenti di tipo appropriati.
Se l'oggetto corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, questo metodo cerca nei membri del vincolo di classe o nei membri di se non è presente Type Object alcun vincolo di classe.
Nota
Per i metodi generici, non includere gli argomenti di tipo in name
. Ad esempio, il codice C# cerca un membro con il nome di testo " ", anziché un metodo denominato con un GetMember("MyMethod<int>")
argomento generico di tipo MyMethod<int>
MyMethod
int
.
Vedi anche
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Si applica a
GetMember(String, BindingFlags)
Cerca i membri specificati, usando i vincoli di binding specificati.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.BindingFlags bindingAttr);
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()
Parametri
- name
- String
Stringa contenente il nome dei membri da ottenere.
- bindingAttr
- BindingFlags
Combinazione bit per bit di valori di enumerazione che specifica il modo in cui viene eseguita la ricerca.
-oppure- Default per restituire una matrice vuota.
Restituisce
Matrice di oggetti MemberInfo che rappresentano i membri pubblici con il nome specificato, se presenti; in caso contrario, matrice vuota.
Implementazioni
Eccezioni
name
è null
.
Esempio
Nell'esempio seguente vengono visualizzati tutti i membri statici pubblici della myString
classe che iniziano con la lettera C.
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
array<MemberInfo^>^myMembers = myType->GetMember( "C*", static_cast<BindingFlags>(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 ] );
}
else
Console::WriteLine( "No members match the search criteria." );
}
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.");
}
}
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
Commenti
Questo metodo può essere sottoposto a override da una classe derivata.
I membri includono proprietà, metodi, campi, eventi e così via.
Il metodo non restituisce membri in un ordine particolare, ad esempio l'ordine GetMember alfabetico o di dichiarazione. Il codice non deve dipendere dall'ordine in cui vengono restituiti i membri, perché tale ordine varia.
I flag BindingFlags di filtro seguenti possono essere usati per definire i membri da includere nella ricerca:
È necessario specificare
BindingFlags.Instance
o per ottenere un valoreBindingFlags.Static
restituito.Specificare
BindingFlags.Public
per includere i membri pubblici nella ricerca.Specificare per includere nella ricerca membri non pubblici, ovvero membri privati, interni
BindingFlags.NonPublic
e protetti.Specificare
BindingFlags.FlattenHierarchy
per includere i membripublic
protected
statici e verso l'alto nella gerarchia. Iprivate
membri statici nelle classi ereditate non sono inclusi.
Per modificare BindingFlags il funzionamento della ricerca, è possibile usare i flag di modifica seguenti:
BindingFlags.IgnoreCase
per ignorare la distinzione tra maiuscole ename
minuscole.BindingFlags.DeclaredOnly
per cercare solo i membri dichiarati in Type , non i membri semplicemente ereditati.
Per altre informazioni, vedere System.Reflection.BindingFlags.
Per ottenere l'inizializzatore di classe (costruttore statico) usando questo overload del metodo, è necessario specificare "costruttore statico" per e | name
BindingFlags.Static ( in BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) per bindingAttr
. È anche possibile ottenere l'inizializzatore di classe usando la TypeInitializer proprietà .
Se l'oggetto corrente rappresenta un tipo generico costruito, questo metodo restituisce con Type i parametri di tipo MemberInfo sostituiti dagli argomenti di tipo appropriati.
Se l'oggetto corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, questo metodo cerca nei membri del vincolo di classe o nei membri di se non è presente Type Object alcun vincolo di classe.
Nota
Per i metodi generici, non includere gli argomenti di tipo in name
. Ad esempio, il codice C# cerca un membro con il nome di testo " ", anziché un metodo denominato con un GetMember("MyMethod<int>")
argomento generico di tipo MyMethod<int>
MyMethod
int
.
Vedi anche
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Si applica a
GetMember(String, MemberTypes, BindingFlags)
Cerca i membri specificati del tipo di membro specificato usando i vincoli di associazione specificati.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::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);
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()
Parametri
- name
- String
Stringa contenente il nome dei membri da ottenere.
- type
- MemberTypes
Valore da cercare.
- bindingAttr
- BindingFlags
Combinazione bit per bit di valori di enumerazione che specifica il modo in cui viene eseguita la ricerca.
-oppure- Default per restituire una matrice vuota.
Restituisce
Matrice di oggetti MemberInfo che rappresentano i membri pubblici con il nome specificato, se presenti; in caso contrario, matrice vuota.
Implementazioni
Eccezioni
name
è null
.
Una classe derivata deve fornire un'implementazione.
Esempio
Nell'esempio seguente vengono visualizzati tutti i metodi myString
della classe che iniziano con la lettera C.
void GetPublicInstanceMethodMemberInfo()
{
String^ myString = "GetMember_String_MemberType_BindingFlag";
Type^ myType = myString->GetType();
// Get the public instance methods for myString starting with the letter C.
array<MemberInfo^>^myMembers = myType->GetMember( "C*", MemberTypes::Method, static_cast<BindingFlags>(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 ] );
}
else
Console::WriteLine( "No members match the search criteria." );
}
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.");
}
}
}
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
Commenti
I membri includono proprietà, metodi, campi, eventi e così via.
Il metodo non restituisce membri in un ordine particolare, ad esempio l'ordine GetMember alfabetico o di dichiarazione. Il codice non deve dipendere dall'ordine in cui vengono restituiti i membri, perché tale ordine varia.
I flag BindingFlags di filtro seguenti possono essere usati per definire i membri da includere nella ricerca:
È necessario specificare
BindingFlags.Instance
o per ottenere un valoreBindingFlags.Static
restituito.Specificare
BindingFlags.Public
per includere i membri pubblici nella ricerca.Specificare per includere nella ricerca membri non pubblici, ovvero membri privati, interni
BindingFlags.NonPublic
e protetti.Specificare
BindingFlags.FlattenHierarchy
per includere i membripublic
protected
statici e verso l'alto nella gerarchia. Iprivate
membri statici nelle classi ereditate non sono inclusi.
Per modificare BindingFlags il funzionamento della ricerca, è possibile usare i flag di modifica seguenti:
BindingFlags.IgnoreCase
per ignorare la distinzione tra maiuscole ename
minuscole.BindingFlags.DeclaredOnly
per cercare solo i membri dichiarati in Type , non i membri semplicemente ereditati.
Per altre informazioni, vedere System.Reflection.BindingFlags.
Per ottenere l'inizializzatore di classe (costruttore statico) usando questo overload del metodo, è necessario specificare "costruttore statico" per , per e name
MemberTypes.Constructor | ( in type
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) per bindingAttr
. È anche possibile ottenere l'inizializzatore di classe usando la TypeInitializer proprietà .
Se l'oggetto corrente rappresenta un tipo generico costruito, questo metodo restituisce con Type i parametri di tipo MemberInfo sostituiti dagli argomenti di tipo appropriati.
Se l'oggetto corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, questo metodo cerca nei membri del vincolo di classe o nei membri di se non è presente Type Object alcun vincolo di classe.
Nota
Per i metodi generici, non includere gli argomenti di tipo in name
. Ad esempio, il codice C# cerca un membro con il nome di testo " ", anziché un metodo denominato con un GetMember("MyMethod<int>")
argomento generico di tipo MyMethod<int>
MyMethod
int
.
Vedi anche
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)