내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

Type.GetProperty 메서드 (String, BindingFlags)

지정된 속성을 지정된 바인딩 제약 조건으로 검색합니다.

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr
)

매개 변수

name
형식: System.String
가져올 속성의 이름이 들어 있는 String입니다.
bindingAttr
형식: System.Reflection.BindingFlags
검색 방법을 지정하는 하나 이상의 BindingFlags로 구성된 비트 마스크입니다.
- 또는 -
0(null을 반환하는 경우)

반환 값

형식: System.Reflection.PropertyInfo
지정된 요구 사항과 일치하는 속성을 나타내는 PropertyInfo 개체가 있으면 이 개체를 반환하고, 그렇지 않으면 null을 반환합니다.

구현

IReflect.GetProperty(String, BindingFlags)

예외상황
AmbiguousMatchException

지정된 이름을 가지고 있으며 지정된 바인딩 제약 조건과 일치하는 속성이 둘 이상 발견된 경우 설명 부분을 참조하십시오.

ArgumentNullException

namenull인 경우

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

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

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

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

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

  • BindingFlags.FlattenHierarchy 를 지정하여 publicprotected 정적 멤버를 이 계층 구조에 포함시킵니다. 상속된 클래스의 private 정적 멤버는 포함되지 않습니다.

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

  • name의 대/소문자를 무시하기 위한 BindingFlags.IgnoreCase

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

자세한 내용은 System.Reflection.BindingFlags을 참조하십시오.

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

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

AmbiguousMatchException 이 발생하는 상황은 다음과 같습니다.

  • 한 형식에 이름이 같지만 매개 변수 수가 다른 인덱싱된 속성 두 개가 포함되는 경우. 모호성을 해결하려면 매개 변수 형식을 지정하는 GetProperty 메서드의 오버로드를 사용합니다.

  • 파생 형식이 new 한정자(Visual Basic의 Shadows)를 사용하여 동일한 이름의 상속된 속성을 숨기는 속성을 선언하는 경우. 모호성을 해결하려면 BindingFlags.DeclaredOnly를 포함하여 상속되지 않은 멤버에 대한 검색을 제한합니다.

인덱서 및 기본 속성

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 속성은 기본 속성의 이름을 반환합니다.

다음 예제에서는 사용자 정의 클래스의 형식을 검색하고 해당 클래스의 속성을 검색하며 지정된 바인딩 제약 조건에 따라 속성 이름을 표시합니다.

참고참고:

이 예제를 실행하려면 Demo 메서드 및 TextBlock 컨트롤을 사용하는 예제 빌드를 참조하십시오.



using System;
using System.Reflection;
class MyClass
{
   private int myProperty;
   // Declare MyProperty.
   public int MyProperty
   {
      get
      {
         return myProperty;
      }
      set
      {
         myProperty = value;
      }
   }
}
public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      try
      {
         // Get Type object of MyClass.
         Type myType = typeof(MyClass);
         // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
         PropertyInfo myPropInfo = myType.GetProperty("MyProperty", BindingFlags.Public | BindingFlags.Instance);
         // Display Name propety to console.
         outputBlock.Text += String.Format("{0} is a property of MyClass.", myPropInfo.Name) + "\n";
      }
      catch (NullReferenceException e)
      {
         outputBlock.Text += "MyProperty does not exist in MyClass." + e.Message + "\n";
      }
   }
}


Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

XNA Framework

Xbox 360, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft