Type.GetDefaultMembers Metoda

Definicja

Wyszukuje elementy członkowskie zdefiniowane dla Type bieżącego, którego DefaultMemberAttribute ustawiono.

C#
public virtual System.Reflection.MemberInfo[] GetDefaultMembers ();

Zwraca

MemberInfo[]

Tablica MemberInfo obiektów reprezentujących wszystkie domyślne elementy członkowskie bieżącego obiektu Type .

-lub- Pusta tablica typu MemberInfo , jeśli bieżąca Type nie ma domyślnych elementów członkowskich.

Implementuje

Przykłady

Poniższy przykład uzyskuje informacje o domyślnych członkach i MyClass wyświetla domyślne elementy członkowskie.

C#

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);
        }
    }
}

Uwagi

Metoda GetDefaultMembers nie zwraca elementów członkowskich w określonej kolejności, takich jak kolejność alfabetyczna lub deklaracja. Kod nie może zależeć od kolejności, w której są zwracane elementy członkowskie, ponieważ kolejność się zmienia.

Metoda ta może być zastąpiona przez klasę pochodną.

Elementy członkowskie zawierają właściwości, metody, pola, zdarzenia i tak dalej.

W poniższej tabeli przedstawiono, jakie składowe klasy bazowej są zwracane przez metody Get podczas odzwierciedlania w typie.

Typ elementu członkowskiego Static Niestatyczna
Konstruktor Nie Nie
Pole Nie Tak. Pole jest zawsze ukryte przez nazwę i podpis.
Zdarzenie Nie dotyczy Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej.
Metoda Nie Tak. Metodą (zarówno wirtualną, jak i niewirtualną) może być ukrycie przez nazwę lub przez nazwę i podpis.
Typu zagnieżdżony Nie Nie
Właściwość Nie dotyczy Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej.
  1. Ukrycie przez nazwę i podpis dotyczy wszystkich części podpisu, w tym modyfikatorów niestandardowych, zwraca typy, typy parametrów, wartowników i niezarządzane konwencje wywoływania. To jest porównanie binarne.

  2. W celu odbicia właściwości i zdarzenia są ukrywane przez nazwę i podpis. Jeśli istnieje właściwość z akcesorem pobierania i ustawiania w klasie bazowej, ale odziedziczona klasa ma tylko akcesor pobierania, właściwość klasy odziedziczonej ukrywa właściwości klasy bazowej, a nie można uzyskać dostępu do metody ustawiającej w klasie bazowej.

  3. Atrybuty niestandardowe nie są częścią wspólnego typu systemowego.

Jeśli bieżący reprezentuje skonstruowany typ ogólny, ta metoda zwraca obiekty z parametrami typu zastąpionymi odpowiednimi Type MemberInfo argumentami typu. Jeśli na przykład klasa ma właściwość , która zwraca wartość , wywołanie metody przy zwracaniu w języku C<T> P T GetDefaultMembers C<int> int P C# Property P As Integer (w Visual Basic).

Jeśli bieżąca reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje składowe ograniczenia klasy lub składowe klasy , jeśli nie ma żadnych Type Object ograniczeń klasy.

Dotyczy

Produkt Wersje
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Zobacz też