정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Type.GetProperty 메서드 (String, Type)

2013-12-13

지정된 이름과 반환 형식의 public 속성을 검색합니다.

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

public PropertyInfo GetProperty(
	string name,
	Type returnType
)

매개 변수

name
형식: System.String
가져올 public 속성의 이름이 들어 있는 String입니다.
returnType
형식: System.Type
속성의 반환 형식입니다.

반환 값

형식: System.Reflection.PropertyInfo
지정된 이름의 공용 속성이 있으면 해당 속성을 나타내는 PropertyInfo 개체이고, 그렇지 않으면 null입니다.

예외조건
AmbiguousMatchException

지정한 이름의 속성이 하나 이상 있습니다.

ArgumentNullException

namenull이거나 returnTypenull인 경우

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

name 검색은 대/소문자를 구분합니다. 검색에는 public static 및 public 인스턴스 속성이 포함됩니다.

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

다음 예제에서는 속성 하나로 클래스를 정의하고 속성의 이름과 형식을 검색합니다.

참고참고:

이 예제를 실행하려면 Windows Phone용 정적 TextBlock 컨트롤이 있는 예제 빌드를 참조하세요.



using System;
using System.Reflection;

class MyClass1
{
   String myMessage = "Hello World.";
   public string MyProperty1
   {
      get
      {
         return myMessage;
      }
      set
      {
         myMessage = value;
      }
   }
}
class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      try
      {
         Type myType = typeof(MyClass1);
         // Get the PropertyInfo object representing MyProperty1. 
         PropertyInfo myStringProperties1 = myType.GetProperty("MyProperty1",
             typeof(string));
         outputBlock.Text += String.Format("The name of the first property of MyClass1 is {0}.", myStringProperties1.Name) + "\n";
         outputBlock.Text += String.Format("The type of the first property of MyClass1 is {0}.", myStringProperties1.PropertyType) + "\n";
      }
      catch (ArgumentNullException e)
      {
         outputBlock.Text += "ArgumentNullException :" + e.Message + "\n";

      }
      catch (AmbiguousMatchException e)
      {
         outputBlock.Text += "AmbiguousMatchException :" + e.Message + "\n";
      }
      catch (NullReferenceException e)
      {
         outputBlock.Text += String.Format("Message : {0}", e.Message) + "\n";
      }
      //Output:
      //The name of the first property of MyClass1 is MyProperty1.
      //The type of the first property of MyClass1 is System.String.

   }
}


Windows Phone OS

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

Windows Phone

표시: