Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo Type.GetDefaultMembers

Cerca i membri definiti per il Type corrente per cui è impostato il DefaultMemberAttribute.

Spazio dei nomi:  System
Assembly:  mscorlib (in mscorlib.dll)

public virtual MemberInfo[] GetDefaultMembers()

Valore restituito

Tipo: System.Reflection.MemberInfo[]
Matrice di oggetti MemberInfo che rappresentano tutti i membri predefiniti del Type corrente.
-oppure-
Matrice vuota di tipo MemberInfo, se per il Type corrente non esistono membri predefiniti.

Implementa

_Type.GetDefaultMembers()

Il metodo GetDefaultMembers non restituisce i membri in un ordine particolare, ad esempio l'ordine alfabetico o di dichiarazione. Il codice non deve dipendere dall'ordine in cui i membri vengono restituiti perché tale ordine varia.

Il metodo può essere sottoposto a override da una classe derivata.

I membri comprendono proprietà, metodi, campi, eventi e così via.

Nella tabella riportata di seguito vengono illustrati i membri di una classe base restituiti dai metodi Get durante la reflection di un tipo.

Tipo di membro

Statica

Non statico

Costruttore

No

No

Campo

No

Sì. Un campo è sempre di tipo nascondi in base al nome e alla firma.

Evento

Non applicabile

La regola di sistema di tipo comune è che l'eredità è la stessa dei metodi che implementano la proprietà. La reflection considera le proprietà come nascondi in base al nome e alla firma. Vedere la nota 2 più avanti.

Metodo

No

Sì. Un metodo (virtuale o non virtuale) può essere di tipo nascondi in base al nome oppure nascondi in base al nome e alla firma.

Tipo annidato

No

No

Proprietà

Non applicabile

La regola di sistema di tipo comune è che l'eredità è la stessa dei metodi che implementano la proprietà. La reflection considera le proprietà come nascondi in base al nome e alla firma. Vedere la nota 2 più avanti.

  1. Nascondi in base al nome e alla firma prende in considerazione tutte le parti della firma, compresi i modificatori personalizzati, i tipi restituiti, i tipi di parametri, i sentinel e le convenzioni di chiamate non gestite. Si tratta di un confronto binario.

  2. Per la reflection, le proprietà e gli eventi sono di tipo nascondi in base al nome e alla firma. Se una proprietà dispone della funzione di accesso get e della funzione di accesso set nella classe base, ma la classe derivata dispone solo di una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base e non sarà possibile accedere alla funzione di accesso set sulla classe base.

  3. Gli attributi personalizzati non fanno parte del sistema di tipi comune.

Se l'oggetto Type corrente rappresenta un tipo generico costruito, questo metodo restituisce gli oggetti MemberInfo con i parametri di tipo sostituiti dagli argomenti di tipo appropriati. Se ad esempio la classe C<T> dispone di una proprietà P che restituisce T, la chiamata del metodo GetDefaultMembers su C<int> restituisce int P in C# (Property P As Integer in Visual Basic).

Se l'oggetto Type corrente rappresenta un parametro di tipo nella definizione di un tipo o di un metodo generico, mediante questo metodo vengono cercati i membri del vincolo di classe o i membri di Object se non sono presenti vincoli di classe.

Nell'esempio riportato di seguito vengono ottenute le informazioni relative al membro predefinito di MyClass e vengono visualizzati i membri predefiniti.



using System;
using System.Reflection;
using System.IO;

[DefaultMemberAttribute("Age")]   
public class MyClass
{
    public void Name(String s) {}
    public int Age
    {
        get
        {
            return 20;
        }
    }
    public static void Main()
    {
        try
        {
            Type  myType = typeof(MyClass);
            MemberInfo[] memberInfoArray = myType.GetDefaultMembers();
            if (memberInfoArray.Length > 0)
            {
                foreach(MemberInfo memberInfoObj in memberInfoArray)
                {
                    Console.WriteLine("The default member name is: " + memberInfoObj.ToString());
                }
            }
            else
            {
                Console.WriteLine("No default members are available."); 
            }
        }
        catch(InvalidOperationException e)
        {
            Console.WriteLine("InvalidOperationException: " + e.Message);
        }
        catch(IOException e)
        {
            Console.WriteLine("IOException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft