Type.GetDefaultMembers 메서드
현재 Type에 대해 정의된 멤버 중 DefaultMemberAttribute가 설정된 멤버를 검색합니다.
네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)
구문
‘선언
Public Overridable Function GetDefaultMembers As MemberInfo()
‘사용 방법
Dim instance As Type
Dim returnValue As MemberInfo()
returnValue = instance.GetDefaultMembers
public virtual MemberInfo[] GetDefaultMembers ()
public:
virtual array<MemberInfo^>^ GetDefaultMembers ()
public MemberInfo[] GetDefaultMembers ()
public function GetDefaultMembers () : MemberInfo[]
반환 값
현재 Type의 모든 기본 멤버를 나타내는 MemberInfo 개체의 배열입니다. - 또는 - 현재 Type에 기본 멤버가 없을 경우 MemberInfo 형식의 빈 배열입니다.
설명
이 메서드는 파생된 클래스에서 재정의할 수 있습니다.
멤버에는 속성, 메서드, 필드, 이벤트 등이 포함됩니다.
다음 표에서는 Get 메서드를 형식에 리플렉션할 때 해당 메서드에서 반환되는 기본 클래스의 멤버를 보여 줍니다.
멤버 형식 |
정적 |
비정적 |
---|---|---|
생성자 |
아니요 |
아니요 |
필드 |
아니요 |
예. 필드는 항상 이름 및 서명으로 숨겨집니다. |
이벤트 |
사용할 수 없음 |
공용 형식 시스템 규칙은 상속이 속성을 구현한 메서드의 상속과 같다는 것입니다. 리플렉션은 속성을 이름 및 서명으로 숨겨진 상태로 취급합니다. 다음의 참고 2를 참조하십시오. |
메서드 |
아니요 |
예. 가상 및 가상이 아닌 메서드는 모두 이름으로 숨겨지거나 이름 및 서명으로 숨겨질 수 있습니다. |
중첩 형식 |
아니요 |
아니요 |
속성 |
사용할 수 없음 |
공용 형식 시스템 규칙은 상속이 속성을 구현한 메서드의 상속과 같다는 것입니다. 리플렉션은 속성을 이름 및 서명으로 숨겨진 상태로 취급합니다. 다음의 참고 2를 참조하십시오. |
이름 및 서명으로 숨기면 사용자 지정 한정자, 반환 형식, 매개 변수 형식, 센티널, 관리되지 않는 호출 규칙 등을 포함한 서명의 모든 부분을 인식합니다. 이것은 이진 비교입니다.
리플렉션을 위해 속성과 이벤트는 이름 및 서명으로 숨겨집니다. 속성의 기본 클래스에 get 및 set 접근자가 모두 있지만 파생 클래스에는 get 접근자만 있는 경우, 파생 클래스 속성에서는 기본 클래스 속성이 숨겨지므로 기본 클래스의 설정자에 액세스할 수 없습니다.
사용자 지정 특성은 공용 형식 시스템의 일부가 아닙니다.
현재 Type이 생성된 제네릭 형식을 나타내는 경우 이 메서드는 MemberInfo 개체를 반환합니다. 여기에는 적절한 형식 인수로 대체된 형식 매개 변수가 포함됩니다. 예를 들어, C<T>
클래스에 T
를 반환하는 P
속성이 있는 경우 C<int>
에 대해 GetDefaultMembers를 호출하면 C#의 경우 int P
(Visual Basic의 경우 Property P As Integer
)가 반환됩니다.
현재 Type이 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우 이 메서드는 클래스 제약 조건의 멤버를 검색하거나 클래스 제약 조건이 없으면 Object의 멤버를 검색합니다.
예제
다음 예제에서는 MyClass의 기본 멤버 정보를 얻고 기본 멤버를 표시합니다.
Imports System
Imports System.Reflection
Imports System.IO
Imports Microsoft.VisualBasic
<DefaultMemberAttribute("Age")> Public Class [MyClass]
Public Sub Name(ByVal s As String)
End Sub 'Name
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 'Main
End Class '[MyClass]
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);
}
}
}
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 );
}
}
import System.*;
import System.Reflection.*;
import System.IO.*;
/** @attribute DefaultMemberAttribute("Age")
*/
public class MyClass
{
public void Name(String s)
{
} //Name
/** @property
*/
public int get_Age()
{
return 20;
} //get_Age
public static void main(String[] args)
{
try {
Type myType = MyClass.class.ToType();
MemberInfo memberInfoArray[] = myType.GetDefaultMembers();
if (memberInfoArray.length > 0) {
for (int iCtr = 0; iCtr < memberInfoArray.length; iCtr++) {
MemberInfo memberInfoObj = memberInfoArray[iCtr];
Console.WriteLine("The default member name is: "
+ memberInfoObj.ToString());
}
}
else {
Console.WriteLine("No default members are available.");
}
}
catch (InvalidOperationException e) {
Console.WriteLine("InvalidOperationException: " + e.get_Message());
}
catch (IOException e) {
Console.WriteLine("IOException: " + e.get_Message());
}
catch (System.Exception e) {
Console.WriteLine("Exception: " + e.get_Message());
}
} //main
} //MyClass
플랫폼
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
2.0, 1.1, 1.0에서 지원
.NET Compact Framework
2.0, 1.0에서 지원
참고 항목
참조
Type 클래스
Type 멤버
System 네임스페이스
MemberInfo
DefaultMemberAttribute
GetMember
GetMembers
FindMembers