Type.GetDefaultMembers 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재 Type에 대해 정의된 멤버 중 DefaultMemberAttribute가 설정된 멤버를 검색합니다.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetDefaultMembers();
public virtual System.Reflection.MemberInfo[] GetDefaultMembers ();
abstract member GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
override this.GetDefaultMembers : unit -> System.Reflection.MemberInfo[]
Public Overridable Function GetDefaultMembers () As MemberInfo()
반환
현재 MemberInfo의 모든 기본 멤버를 나타내는 Type 개체의 배열입니다.
또는 현재 MemberInfo에 기본 멤버가 없을 경우 Type 형식의 빈 배열입니다.
구현
예제
다음 예제에서는 의 기본 멤버 정보를 MyClass
가져오고 기본 멤버를 표시합니다.
using namespace System;
using namespace System::Reflection;
using namespace System::IO;
[DefaultMemberAttribute("Age")]
public ref class MyClass
{
public:
void Name( String^ s ){}
property int Age
{
int get()
{
return 20;
}
}
};
int main()
{
try
{
Type^ myType = MyClass::typeid;
array<MemberInfo^>^memberInfoArray = myType->GetDefaultMembers();
if ( memberInfoArray->Length > 0 )
{
System::Collections::IEnumerator^ myEnum = memberInfoArray->GetEnumerator();
while ( myEnum->MoveNext() )
{
MemberInfo^ memberInfoObj = safe_cast<MemberInfo^>(myEnum->Current);
Console::WriteLine( "The default member name is: {0}", memberInfoObj );
}
}
else
{
Console::WriteLine( "No default members are available." );
}
}
catch ( InvalidOperationException^ e )
{
Console::WriteLine( "InvalidOperationException: {0}", e->Message );
}
catch ( IOException^ e )
{
Console::WriteLine( "IOException: {0}", e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception: {0}", e->Message );
}
}
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);
}
}
}
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
설명
GetDefaultMembers메서드는 사전순 또는 선언 순서와 같은 특정 순서로 멤버를 반환하지 않습니다. 순서가 달라지므로 멤버가 반환되는 순서에 따라 코드가 달라지지 않아야 합니다.
이 메서드는 파생 클래스에서 재정의할 수 있습니다.
멤버에는 속성, 메서드, 필드, 이벤트 등이 포함됩니다.
다음 표에서는 형식에 반영할 때 메서드에서 반환되는 기본 클래스의 멤버를 보여 Get
있습니다.
멤버 형식 | 정적 | 비정적 |
---|---|---|
생성자 | 아니요 | 아니요 |
필드 | 아니요 | 예. 필드는 항상 이름 및 서명을 숨깁니다. |
이벤트 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드의 상속과 동일하다는 것입니다. 리플렉션은 속성을 hide-by-name-and-signature로 처리합니다. 아래 참고 2를 참조하세요. |
메서드 | 아니요 | 예. 메서드(가상 및 가상이 아닌 메서드)는 이름별로 숨기거나 이름 및 서명으로 숨길 수 있습니다. |
중첩 형식 | 아니요 | 아니요 |
속성 | 해당 없음 | 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드의 상속과 동일하다는 것입니다. 리플렉션은 속성을 hide-by-name-and-signature로 처리합니다. 아래 참고 2를 참조하세요. |
이름별 숨기기 및 서명은 사용자 지정 한정자, 반환 형식, 매개 변수 형식, sentinels 및 관리되지 않는 호출 규칙을 포함하여 서명의 모든 부분을 고려합니다. 이진 비교입니다.
리플렉션의 경우 속성 및 이벤트는 이름별 및 서명으로 숨깁니다. 기본 클래스에 get 및 set 접근자를 모두 가진 속성이 있지만 파생 클래스에 get 접근자만 있는 경우 파생 클래스 속성은 기본 클래스 속성을 숨기며 기본 클래스의 setter에 액세스할 수 없습니다.
사용자 지정 특성은 공용 형식 시스템의 일부가 아닙니다.
현재 가 Type 구성된 제네릭 형식을 나타내는 경우 이 메서드는 MemberInfo 형식 매개 변수가 적절한 형식 인수로 대체된 개체를 반환합니다. 예를 들어 C<T>
클래스에 P
를 반환하는 속성이 있는 경우 에서 를 T
호출하면 GetDefaultMembers C<int>
int P
C#(Visual Basic)으로 Property P As Integer
반환됩니다.
현재 가 Type 제네릭 형식 또는 제네릭 메서드 정의에서 형식 매개 변수를 나타내는 경우 이 메서드는 클래스 제약 조건의 멤버 또는 클래스 제약 조건이 없는 경우 의 멤버를 Object 검색합니다.