Type.GetDefaultMembers Yöntem

Tanım

Ayarlanmış olan geçerli TypeDefaultMemberAttribute için tanımlanan üyeleri arar.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetDefaultMembers();
[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 virtual System.Reflection.MemberInfo[] GetDefaultMembers();
public virtual System.Reflection.MemberInfo[] GetDefaultMembers();
[<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)>]
abstract member GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
override this.GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
abstract member GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
override this.GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
Public Overridable Function GetDefaultMembers () As MemberInfo()

Döndürülenler

Geçerli MemberInfoöğesinin Type tüm varsayılan üyelerini temsil eden bir nesne dizisi.

-veya-

Geçerlinin MemberInfo varsayılan üyeleri yoksa, türünde Typeboş bir dizi.

Uygulamalar

Öznitelikler

Örnekler

Aşağıdaki örnek varsayılan üye bilgilerini MyClass alır ve varsayılan üyeleri görüntüler.

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);
        }
    }
}
open System
open System.Reflection
open System.IO

[<DefaultMemberAttribute "Age">]
type MyClass() =
    member _.Name(s: string) = ()
    member _.Age 
        with get () =
            20
try
    let myType = typeof<MyClass>
    let memberInfoArray = myType.GetDefaultMembers()
    if memberInfoArray.Length > 0 then
        for memberInfoObj in memberInfoArray do
            printfn $"The default member name is: {memberInfoObj}"
    else
        printfn "No default members are available."
with
| :? InvalidOperationException as e ->
    printfn $"InvalidOperationException: {e.Message}"
| :? IOException as e ->
    printfn $"IOException: {e.Message}"
| e ->
    printfn $"Exception: {e.Message}"
Imports System.Reflection
Imports System.IO

<DefaultMemberAttribute("Age")> Public Class [MyClass]

    Public Sub Name(ByVal s As String)
    End Sub

    Public ReadOnly Property Age() As Integer
        Get
            Return 20
        End Get
    End Property

    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType([MyClass])
            Dim memberInfoArray As MemberInfo() = myType.GetDefaultMembers()
            If memberInfoArray.Length > 0 Then
                Dim memberInfoObj As MemberInfo
                For Each memberInfoObj In memberInfoArray
                    Console.WriteLine("The default member name is: " + memberInfoObj.ToString())
                Next memberInfoObj
            Else
                Console.WriteLine("No default members are available.")
            End If
        Catch e As InvalidOperationException
            Console.WriteLine("InvalidOperationException: " + e.Message)
        Catch e As IOException
            Console.WriteLine("IOException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub
End Class

Açıklamalar

GetDefaultMembers 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.

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.

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ı No No
Alan No Yes. Alan her zaman isim ve imzaya göre gizli olur.
Olay 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 No Yes. Bir yöntem (hem sanal hem de sanal olmayan) isim odaklı gizleme veya isim ve imza odaklı gizleme olabilir.
İç İçe Yerleştirilmiş Tür No No
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.
  1. 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.

  2. 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.

  3. Özel öznitelikler ortak tür sisteminin bir parçası değildir.

Geçerli Type , yapılandırılmış bir genel türü temsil ederse, bu yöntem nesneleri uygun tür bağımsız değişkenleriyle değiştirilen tür parametreleriyle döndürür MemberInfo . Örneğin, C<T> sınıfında P döndüren bir T özelliği varsa, GetDefaultMembers üzerinde C<int> çağrısı C# dilinde int P döndürür (Visual Basic Property P As Integer).

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.

Şunlara uygulanır

Ayrıca bkz.