내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Type.GetProperty 메서드 (String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

2013-12-13

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 속성을 지정된 바인딩 제약 조건으로 검색합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

매개 변수

name
형식: System.String
가져올 속성의 이름이 들어 있는 String입니다.
bindingAttr
형식: System.Reflection.BindingFlags
검색 방법을 지정하는 하나 이상의 BindingFlags로 구성된 비트 마스크입니다.
-또는-
0입니다(null을 반환하는 경우).
binder
형식: System.Reflection.Binder
속성 집합을 정의하고 바인딩을 활성화하는 Binder 개체입니다. 이 개체는 또한 리플렉션을 통해 오버로드된 멤버를 선택할 수 있고 인수 형식을 강제 변환할 수 있으며 멤버를 호출할 수도 있습니다.
-또는-
DefaultBinder를 사용하는 null 참조(Visual Basic의 경우 Nothing)입니다.
returnType
형식: System.Type
속성의 반환 형식입니다.
types
형식: System.Type []
가져올 인덱싱된 속성에 대한 매개 변수의 수, 차수, 형식 등을 나타내는 Type 개체 배열입니다.
-또는-
인덱싱되지 않은 속성을 가져오기 위한 Type 형식의 빈 배열입니다(즉, Type[] types = new Type[0]).
modifiers
형식: System.Reflection.ParameterModifier []
types 배열에서 해당하는 요소와 연관된 특성을 나타내는 ParameterModifier 개체 배열입니다. 기본 바인더에서는 이 매개 변수를 처리하지 않습니다.

반환 값

형식: System.Reflection.PropertyInfo
지정한 요구 사항에 맞는 속성이 있으면 해당 속성을 나타내는 PropertyInfo 개체이고, 그렇지 않으면 null입니다.

Implements

IReflect.GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

예외조건
AmbiguousMatchException

지정된 바인딩 제약 조건에 맞고 지정된 이름을 갖는 속성이 하나 이상 있는 경우

ArgumentNullException

namenull인 경우

-또는-

typesnull인 경우

ArgumentException

types가 다차원 배열인 경우

-또는-

modifiers가 다차원 배열인 경우

-또는-

typesmodifiers의 길이가 같지 않은 경우

NullReferenceException

types의 요소가 null인 경우

속성에 public 접근자가 적어도 하나 있으면 해당 속성은 리플렉션에 대해 public 속성인 것으로 간주됩니다. 그렇지 않은 경우 속성은 private으로 간주되며 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static(Visual Basic의 경우 Or로 값을 조합하여 사용)을 사용해야 해당 속성을 가져올 수 있습니다.

기본 바인더에서 ParameterModifier(modifiers 매개 변수)를 처리하지 않더라도 추상 System.Reflection.Binder 클래스를 사용하여 modifiers를 처리하는 사용자 지정 바인더를 작성할 수 있습니다. ParameterModifier는 COM interop를 통해 호출하는 경우에만 사용되며 참조에 의해 전달된 매개 변수만 처리합니다.

다음 표에서는 Get 메서드를 형식에 리플렉션할 때 해당 메서드에서 반환되는 기본 클래스의 멤버를 보여 줍니다.

멤버 형식

정적

비정적

생성자

아니요

아니요

필드

아니요

예 필드는 항상 이름 및 서명으로 숨겨집니다.

이벤트

사용할 수 없음

공용 형식 시스템 규칙은 상속이 속성을 구현한 메서드의 상속과 같다는 것입니다. 리플렉션은 속성을 이름 및 서명으로 숨겨진 상태로 취급합니다. 다음의 참고 2를 참조하세요.

메서드

아니요

예 가상 및 가상이 아닌 메서드는 모두 이름으로 숨겨지거나 이름 및 서명으로 숨겨질 수 있습니다.

중첩 형식

아니요

아니요

속성

사용할 수 없음

공용 형식 시스템 규칙은 상속이 속성을 구현한 메서드의 상속과 같다는 것입니다. 리플렉션은 속성을 이름 및 서명으로 숨겨진 상태로 취급합니다. 다음의 참고 2를 참조하세요.

참고:

  1. 이름 및 서명으로 숨기면 사용자 지정 한정자, 반환 형식, 매개 변수 형식, 센티널, 관리되지 않는 호출 규칙 등을 포함한 서명의 모든 부분을 인식합니다. 이것은 이진 비교입니다.

  2. 리플렉션을 위해 속성과 이벤트는 이름 및 서명으로 숨겨집니다. 속성의 기본 클래스에 get 및 set 접근자가 모두 있지만 파생 클래스에는 get 접근자만 있는 경우, 파생 클래스 속성에서는 기본 클래스 속성이 숨겨지므로 기본 클래스의 설정자에 액세스할 수 없습니다.

  3. 사용자 지정 특성은 공용 형식 시스템의 일부가 아닙니다.

types 배열과 modifiers 배열의 길이가 같습니다. types 배열에 지정된 매개 변수는 modifiers 배열에 지정되는 pdIn, pdOut, pdLcid, pdRetval, pdOptional 및 pdHasDefault 특성을 가질 수 있습니다. 이러한 특성은 각각 [In], [Out], [lcid], [retval], [optional] 및 매개 변수가 기본값을 갖는지 여부를 지정하는 값을 나타냅니다. 매개 변수의 관련 특성은 메타데이터에 저장되고 상호 운용성을 향상시킵니다.

다음과 같은 BindingFlags 필터 플래그를 사용하여 검색에 포함할 속성을 정의할 수 있습니다.

  • 반환 값을 가져오려면 BindingFlags.Instance 또는 BindingFlags.Static을 지정해야 합니다.

  • public 속성을 검색에 포함하려면 BindingFlags.Public을 지정합니다.

  • public이 아닌 속성(즉, private 및 protected 속성)을 검색에 포함하려면 BindingFlags.NonPublic을 지정합니다.

  • 계층 구조 위로 publicprotected 정적 멤버를 포함하려면 BindingFlags.FlattenHierarchy를 지정합니다. 상속 클래스의 private 정적 멤버는 포함되지 않습니다.

다음과 같은 BindingFlags 한정자 플래그를 사용하여 검색 작동 방법을 변경할 수 있습니다.

  • name의 대/소문자를 무시하는 BindingFlags.IgnoreCase

  • 단순히 상속된 속성을 검색하지 않고 Type에 선언된 속성만 검색하는 BindingFlags.DeclaredOnly

자세한 내용은 System.Reflection.BindingFlags를 참조하세요.

현재 Type이 생성된 제네릭 형식을 나타내는 경우 이 메서드는 PropertyInfo를 반환합니다. 여기에는 적절한 형식 인수로 대체된 형식 매개 변수가 포함됩니다.

현재 Type이 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우 이 메서드는 클래스 제약 조건의 속성을 검색합니다.

인덱서 및 기본 속성

Visual Basic 2005, Visual C# 2005 및 Visual C++ 2005에서는 간단한 구문을 사용하여 인덱싱된 속성에 액세스할 수 있으며 인덱싱된 속성 하나를 해당 형식에 대한 기본값으로 사용할 수 있습니다. 예를 들어 myList 변수가 List<T>를 참조하는 경우 myList[3] (Visual Basic의 경우 myList(3)) 구문을 사용하면 인덱스가 3인 요소가 검색됩니다. 이 속성을 재정의할 수 있습니다.

C#에서는 이 기능을 인덱서라고 하며 이름으로 참조할 수 없습니다. 기본적으로 C# 인덱서는 "Item"이라는 인덱싱된 속성으로 메타데이터에 표시됩니다. 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용하여 메타데이터의 인덱서 이름을 변경할 수 있습니다. 예를 들어, String 클래스에는 Chars라는 인덱서가 있습니다. C# 이외의 언어를 사용하여 만든 인덱싱된 속성은 Item 이외의 이름도 가질 수 있습니다.

형식에 기본 속성이 있는지 여부를 확인하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용하여 DefaultMemberAttribute 특성을 테스트합니다. 형식에 DefaultMemberAttribute가 있는 경우 MemberName 속성은 기본 속성의 이름을 반환합니다.

버전 메모

typesnull 요소가 포함된 경우

Windows Phone

 GetPropertyArgumentNullException 대신 NullReferenceException을 발생합니다.

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2014 Microsoft