Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Type.GetDefaultMembers ()

 

Data di pubblicazione: ottobre 2016

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

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

public virtual MemberInfo[] GetDefaultMembers()

Valore restituito

Type: System.Reflection.MemberInfo[]

Matrice di oggetti MemberInfo che rappresentano tutti i membri predefiniti dell'oggetto Type corrente.

-oppure-

Matrice vuota di tipo MemberInfo, se per l'oggetto Type corrente non esistono membri predefiniti.

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

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

Membri includono proprietà, metodi, campi, eventi e così via.

Nella tabella seguente mostra quali vengono restituiti dai membri di una classe base di Get metodi durante la reflection su un tipo.

Tipo di membro

Statico

Non statico

Costruttore

No

No

Campo

No

Sì. Un campo viene sempre Nascondi in base al nome e-firma.

Evento

Non applicabile

La regola di sistema di tipo comune è che l'ereditarietà è uguale a quello dei metodi che implementano la proprietà. Reflection considera le proprietà come Nascondi in base al nome e-firma. Vedere la nota 2 di seguito.

Metodo

No

Sì. Un metodo (virtuale e non virtuale) può essere hide-by-name o Nascondi in base al nome e-firma.

Tipo annidato

No

No

Proprietà

Non applicabile

La regola di sistema di tipo comune è che l'ereditarietà è uguale a quello dei metodi che implementano la proprietà. Reflection considera le proprietà come Nascondi in base al nome e-firma. Vedere la nota 2 di seguito.

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

  2. Per la reflection, proprietà ed eventi sono Nascondi in base al nome e-firma. Se si dispone di una proprietà con sia un'operazione get e set nella classe di base, ma la classe derivata dispone solo una funzione di accesso get, la proprietà della classe derivata nasconde la proprietà della classe base, e non sarà in grado di accedere il setter della classe base.

  3. Attributi personalizzati non fanno parte di common type system.

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

Se l'oggetto Type rappresenta un parametro di tipo nella definizione di un tipo generico o un metodo generico, questo metodo vengono cercati i membri del vincolo di classe o i membri di Object se è presente alcun vincolo di classe.

Nell'esempio seguente recupera le informazioni di membro predefinito di MyClass e visualizza 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
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: