Type.GetProperty Method

Definition

현재 Type의 특정 속성을 가져옵니다.Gets a specific property of the current Type.

Overloads

GetProperty(String)

지정한 이름을 가진 공용 속성을 검색합니다.Searches for the public property with the specified name.

GetProperty(String, BindingFlags)

지정된 속성을 지정된 바인딩 제약 조건으로 검색합니다.Searches for the specified property, using the specified binding constraints.

GetProperty(String, Type)

지정된 이름과 반환 형식의 public 속성을 검색합니다.Searches for the public property with the specified name and return type.

GetProperty(String, Type[])

지정된 인수 형식과 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types.

GetProperty(String, Type, Type[])

지정된 인수 형식과 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types.

GetProperty(String, Type, Type[], ParameterModifier[])

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types and modifiers.

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

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 속성을 지정된 바인딩 제약 조건으로 검색합니다.Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

GetProperty(String)

지정한 이름을 가진 공용 속성을 검색합니다.Searches for the public property with the specified name.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name);
public System.Reflection.PropertyInfo GetProperty (string name);
member this.GetProperty : string -> System.Reflection.PropertyInfo
abstract member GetProperty : string -> System.Reflection.PropertyInfo
override this.GetProperty : string -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String) As PropertyInfo

Parameters

name
String

가져올 공용 속성의 이름이 포함된 문자열입니다.The string containing the name of the public property to get.

Returns

PropertyInfo

지정된 이름의 공용 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the public property with the specified name, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가진 속성이 둘 이상 있습니다.More than one property is found with the specified name.

namenull입니다.name is null.

Examples

다음 예제에서는 사용자 정의 클래스의 Type 개체를 검색 하 고 해당 클래스의 속성을 검색 한 다음 속성 이름을 표시 합니다.The following example retrieves the Type object of a user-defined class, retrieves a property of that class, and displays the property name.

using namespace System;
using namespace System::Reflection;
ref class MyClass
{
private:
   int myProperty;

public:

   property int MyProperty 
   {
      // Declare MyProperty.
      int get()
      {
         return myProperty;
      }

      void set( int value )
      {
         myProperty = value;
      }
   }
};

int main()
{
   try
   {
      // Get the Type object corresponding to MyClass.
      Type^ myType = MyClass::typeid;
      
      // Get the PropertyInfo object by passing the property name.
      PropertyInfo^ myPropInfo = myType->GetProperty( "MyProperty" );
      
      // Display the property name.
      Console::WriteLine( "The {0} property exists in MyClass.", myPropInfo->Name );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "The property does not exist in MyClass. {0}", e->Message );
   }
}

using System;
using System.Reflection;

class MyClass
{
    private int myProperty;
    // Declare MyProperty.
    public int MyProperty
    {
        get
        {
            return myProperty;
        }
        set
        {
            myProperty=value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get the Type object corresponding to MyClass.
            Type myType=typeof(MyClass);
            // Get the PropertyInfo object by passing the property name.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty");
            // Display the property name.
            Console.WriteLine("The {0} property exists in MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("The property does not exist in MyClass." + e.Message);
        }
    }
}
Imports System.Reflection
Class MyClass1
    Private myProperty1 As Integer
    ' Declare MyProperty.

    Public Property MyProperty() As Integer
        Get
            Return myProperty1
        End Get
        Set(ByVal Value As Integer)
            myProperty1 = Value
        End Set
    End Property
End Class

Public Class MyTypeClass
    Public Shared Sub Main(ByVal args() As String)
        Try
            ' Get Type Object corresponding to MyClass.
            Dim myType As Type = GetType(MyClass1)
            ' Get PropertyInfo object by passing property name.
            Dim myPropInfo As PropertyInfo = myType.GetProperty("MyProperty")
            ' Display Name propety to console.
            Console.WriteLine("The {0} property exists in MyClass.", myPropInfo.Name)
        Catch e As NullReferenceException
            Console.WriteLine("The property does not exist in MyClass.", e.Message.ToString())
        End Try
    End Sub
End Class

내부적으로이 속성은 참조 메타 데이터에서 이름이 "항목"입니다.Internally, this property is referred to in the metadata by the name "Item." 리플렉션을 사용 하 여 PropertyInfo를 가져오려는 모든 시도는 PropertyInfo 속성을 올바르게 반환 하기 위해이 내부 이름을 지정 해야 합니다.Any attempt to get PropertyInfo using reflection must specify this internal name in order to correctly return the PropertyInfo property.

Remarks

name 검색은 대/소문자를 구분 합니다.The search for name is case-sensitive. 검색 public static 및 public 인스턴스 속성을 포함합니다.The search includes public static and public instance properties.

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

AmbiguousMatchException 발생 하는 상황은 다음과 같습니다.Situations in which AmbiguousMatchException occurs include the following:

  • 형식에는 두 개의 동일한 인덱싱된 속성 이름을 다른 개수의 매개 변수입니다.A type contains two indexed properties that have the same name but different numbers of parameters. 모호성을 해결 하려면 매개 변수 형식을 지정 하는 GetProperty 메서드의 오버 로드를 사용 합니다.To resolve the ambiguity, use an overload of the GetProperty method that specifies parameter types.

  • 파생 된 형식은 new 한정자 (Visual Basic의Shadows)를 사용 하 여 이름이 같은 상속 된 속성을 숨기는 속성을 선언 합니다.A derived type declares a property that hides an inherited property with the same name, by using the new modifier (Shadows in Visual Basic). 모호성을 해결 하려면 GetProperty(String, BindingFlags) 메서드 오버 로드를 사용 하 고 BindingFlags.DeclaredOnly 플래그를 추가 하 여 상속 되지 않는 멤버에 대 한 검색을 제한 합니다.To resolve the ambiguity, use the GetProperty(String, BindingFlags) method overload and add the BindingFlags.DeclaredOnly flag to restrict the search to members that are not inherited.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

GetProperty(String, BindingFlags)

지정된 속성을 지정된 바인딩 제약 조건으로 검색합니다.Searches for the specified property, using the specified binding constraints.

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public System.Reflection.PropertyInfo GetProperty (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetProperty : string * System.Reflection.BindingFlags -> System.Reflection.PropertyInfo
override this.GetProperty : string * System.Reflection.BindingFlags -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, bindingAttr As BindingFlags) As PropertyInfo

Parameters

name
String

가져올 속성의 이름이 포함된 문자열입니다.The string containing the name of the property to get.

bindingAttr
BindingFlags

검색 방법을 지정하는 열거형 값의 비트 조합입니다.A bitwise combination of the enumeration values that specify how the search is conducted.

-또는--or- null을 반환하는 Default입니다.Default to return null.

Returns

PropertyInfo

지정된 요구 사항과 일치하는 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the property that matches the specified requirements, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가지며 지정된 바인딩 제약 조건과 일치하는 속성이 둘 이상 발견되었습니다.More than one property is found with the specified name and matching the specified binding constraints.

namenull입니다.name is null.

Examples

다음 예제에서는 사용자 정의 클래스의 형식을 검색, 해당 클래스의 속성을 검색 및 지정 된 바인딩 제약 조건에 따라 속성 이름을 표시 합니다.The following example retrieves the type of a user-defined class, retrieves a property of that class and displays the property name in accordance with the specified binding constraints.

using namespace System;
using namespace System::Reflection;
ref class MyClass
{
private:
   int myProperty;

public:

   property int MyProperty 
   {
      // Declare MyProperty.
      int get()
      {
         return myProperty;
      }

      void set( int value )
      {
         myProperty = value;
      }
   }
};

int main()
{
   try
   {
      // Get Type object of MyClass.
      Type^ myType = MyClass::typeid;
      
      // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
      PropertyInfo^ myPropInfo = myType->GetProperty( "MyProperty", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      
      // Display Name propety to console.
      Console::WriteLine( "{0} is a property of MyClass.", myPropInfo->Name );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "MyProperty does not exist in MyClass. {0}", e->Message );
   }
}

using System;
using System.Reflection;
class MyClass
{
    private int myProperty;
    // Declare MyProperty.
    public int MyProperty
    {
        get
        {
            return myProperty;
        }
        set
        {
            myProperty=value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        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.
            Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("MyProperty does not exist in MyClass." +e.Message);
        }
    }
}

Imports System.Reflection
Module Module1
    Public Class MyClass1
        Private myProperty1 As Integer
        ' Declare MyProperty.
        Public Property MyProperty() As Integer
            Get
                Return myProperty1
            End Get
            Set(ByVal Value As Integer)
                myProperty1 = Value
            End Set
        End Property
        Public Shared Sub Main()
            Try
                ' Get a Type object corresponding to MyClass.
                Dim myType As Type = GetType(MyClass1)
                ' Get a PropertyInfo object by passing property name and specifying BindingFlags.
                Dim myPropInfo As PropertyInfo = myType.GetProperty("MyProperty", BindingFlags.Public Or BindingFlags.Instance)
                ' Display the Name property.
                Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name)
            Catch e As NullReferenceException
                Console.WriteLine("MyProperty does not exist in MyClass.", e.Message.ToString())
            End Try
        End Sub
    End Class
End Module 'Module1

Remarks

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

다음 BindingFlags 필터 플래그는 검색에 포함할 속성을 정의 하는 데 사용할 수 있습니다.The following BindingFlags filter flags can be used to define which properties to include in the search:

  • 반환을 얻으려면 BindingFlags.Instance 또는 BindingFlags.Static 중 하나를 지정 해야 합니다.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • 검색에 공용 속성을 포함 하려면 BindingFlags.Public를 지정 합니다.Specify BindingFlags.Public to include public properties in the search.

  • 검색에 public이 아닌 속성 (즉, private, internal 및 protected 속성)을 포함 하려면 BindingFlags.NonPublic를 지정 합니다.Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • 계층 구조에서 publicprotected 정적 멤버를 포함 하도록 BindingFlags.FlattenHierarchy를 지정 합니다. 상속 된 클래스의 정적 멤버 private 포함 되지 않습니다.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

다음 BindingFlags 한정자 플래그를 사용 하 여 검색의 작동 방식을 변경할 수 있습니다.The following BindingFlags modifier flags can be used to change how the search works:

  • name의 대/소문자를 무시 하려면 BindingFlags.IgnoreCase 합니다.BindingFlags.IgnoreCase to ignore the case of name.

  • 단순히 상속 된 속성이 아닌 Type에 선언 된 속성만 검색 BindingFlags.DeclaredOnly 합니다.BindingFlags.DeclaredOnly to search only the properties declared on the Type, not properties that were simply inherited.

자세한 내용은 System.Reflection.BindingFlags을 참조하세요.See System.Reflection.BindingFlags for more information.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

AmbiguousMatchException 발생 하는 상황은 다음과 같습니다.Situations in which AmbiguousMatchException occurs include the following:

  • 형식에는 두 개의 동일한 인덱싱된 속성 이름을 다른 개수의 매개 변수입니다.A type contains two indexed properties that have the same name but different numbers of parameters. 모호성을 해결 하려면 매개 변수 형식을 지정 하는 GetProperty 메서드의 오버 로드를 사용 합니다.To resolve the ambiguity, use an overload of the GetProperty method that specifies parameter types.

  • 파생 된 형식은 new 한정자 (Visual Basic의Shadows)를 사용 하 여 이름이 같은 상속 된 속성을 숨기는 속성을 선언 합니다.A derived type declares a property that hides an inherited property with the same name, using the new modifier (Shadows in Visual Basic). 모호성을 해결 하려면 BindingFlags.DeclaredOnly를 포함 하 여 상속 되지 않은 멤버로 검색을 제한 합니다.To resolve the ambiguity, include BindingFlags.DeclaredOnly to restrict the search to members that are not inherited.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

GetProperty(String, Type)

지정된 이름과 반환 형식의 public 속성을 검색합니다.Searches for the public property with the specified name and return type.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType);
member this.GetProperty : string * Type -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, returnType As Type) As PropertyInfo

Parameters

name
String

가져올 공용 속성의 이름이 포함된 문자열입니다.The string containing the name of the public property to get.

returnType
Type

속성의 반환 형식입니다.The return type of the property.

Returns

PropertyInfo

지정된 이름의 공용 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the public property with the specified name, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가진 속성이 둘 이상 있습니다.More than one property is found with the specified name.

name이(가) null이거나 returnType이(가) null입니다.name is null, or returnType is null.

Examples

다음 예제에서는 하나의 속성이 있는 클래스를 정의 및 이름 및 형식의 속성을 검색 합니다.The following example defines a class with one property and retrieves the name and type of the property.

using namespace System;
using namespace System::Reflection;
ref class MyClass1
{
private:
   String^ myMessage;

public:

   property String^ MyProperty1 
   {
      String^ get()
      {
         return myMessage;
      }

      void set( String^ value )
      {
         myMessage = value;
      }
   }
};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      
      // Get the PropertyInfo Object* representing MyProperty1.
      PropertyInfo^ myStringProperties1 = myType->GetProperty( "MyProperty1", String::typeid );
      Console::WriteLine( "The name of the first property of MyClass1 is {0}.", myStringProperties1->Name );
      Console::WriteLine( "The type of the first property of MyClass1 is {0}.", myStringProperties1->PropertyType );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException : {0}", e->Message );
   }
   catch ( AmbiguousMatchException^ e ) 
   {
      Console::WriteLine( "AmbiguousMatchException : {0}", e->Message );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "Source : {0}", e->Source );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   //Output:
   //The name of the first property of MyClass1 is MyProperty1.
   //The type of the first property of MyClass1 is System.String.

}

using System;
using System.Reflection;

class MyClass1
{
    String myMessage="Hello World.";
    public string MyProperty1
    {
        get
        {			
            return myMessage;
        }
        set
        {
            myMessage =value;
        }			
    }
}
class TestClass
{
    static void Main()
    {
        try
        {	
            Type myType = typeof(MyClass1);
            // Get the PropertyInfo object representing MyProperty1.
            PropertyInfo myStringProperties1 = myType.GetProperty("MyProperty1",
                typeof(string));
            Console.WriteLine("The name of the first property of MyClass1 is {0}.", myStringProperties1.Name);
            Console.WriteLine("The type of the first property of MyClass1 is {0}.", myStringProperties1.PropertyType);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException :"+e.Message);
        }
        catch(AmbiguousMatchException e)
        {
            Console.WriteLine("AmbiguousMatchException :"+e.Message);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    //Output:
    //The name of the first property of MyClass1 is MyProperty1.
    //The type of the first property of MyClass1 is System.String.
    }
}
Imports System.Reflection
Class MyClass1
    Private myMessage As [String] = "Hello World."
    Public Property MyProperty1() As String
        Get
            Return myMessage
        End Get
        Set(ByVal Value As String)
            myMessage = Value
        End Set
    End Property
End Class

Class TestClass
    Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyClass1)
            ' Get the PropertyInfo object representing MyProperty1. 
            Dim myStringProperties1 As PropertyInfo = myType.GetProperty("MyProperty1", GetType(String))
            Console.WriteLine("The name of the first property of MyClass1 is {0}.", myStringProperties1.Name)
            Console.WriteLine("The type of the first property of MyClass1 is {0}.", myStringProperties1.PropertyType.ToString())
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException :" + e.Message.ToString())
        Catch e As AmbiguousMatchException
            Console.WriteLine("AmbiguousMatchException :" + e.Message.ToString())
        Catch e As NullReferenceException
            Console.WriteLine("Source : {0}", e.Source.ToString())
            Console.WriteLine("Message : {0}", e.Message.ToString())
        End Try
    'Output:
    'The name of the first property of MyClass1 is MyProperty1.
    'The type of the first property of MyClass1 is System.String.

    End Sub
End Class

Remarks

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

name 검색은 대/소문자를 구분 합니다.The search for name is case-sensitive. 검색 public static 및 public 인스턴스 속성을 포함합니다.The search includes public static and public instance properties.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

GetProperty(String, Type[])

지정된 인수 형식과 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, cli::array <Type ^> ^ types);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, cli::array <Type ^> ^ types);
public System.Reflection.PropertyInfo GetProperty (string name, Type[] types);
member this.GetProperty : string * Type[] -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, types As Type()) As PropertyInfo

Parameters

name
String

가져올 공용 속성의 이름이 포함된 문자열입니다.The string containing the name of the public property to get.

types
Type[]

가져올 인덱싱된 속성에 대한 매개 변수의 수, 차수, 형식 등을 나타내는 Type 개체 배열입니다.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-또는--or- 인덱싱되지 않은 속성을 가져오기 위한 Type 형식의 빈 배열입니다(즉, Type[] types = new Type[0]).An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

Returns

PropertyInfo

지정된 인수 형식과 일치하는 매개 변수를 가진 공용 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the public property whose parameters match the specified argument types, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가지며 지정된 인수 형식과 일치하는 속성이 둘 이상 발견되었습니다.More than one property is found with the specified name and matching the specified argument types.

namenull입니다.name is null.

-또는--or- typesnull입니다.types is null.

types는 다차원입니다.types is multidimensional.

types의 요소가 null입니다.An element of types is null.

Examples

다음 예제에서는 사용자 정의 클래스의 Type 개체를 검색 하 고 해당 클래스의 속성을 검색 한 다음 GetProperty에 전달 된 인수에 지정 된 대로 속성 이름 및 속성 형식을 표시 합니다.The following example retrieves the Type object of a user-defined class, retrieves the property of that class, and displays the property name and type of the property as specified by the arguments passed to GetProperty.

using namespace System;
using namespace System::Reflection;
ref class MyClass1
{
private:
   array<int, 2>^myArray;

public:

   property int Item [int, int]
   {

      // Declare an indexer.
      int get( int i, int j )
      {
         return myArray[ i,j ];
      }

      void set( int i, int j, int value )
      {
         myArray[ i,j ] = value;
      }

   }

};

int main()
{
   try
   {
      
      // Get the Type object.
      Type^ myType = MyClass1::typeid;
      array<Type^>^myTypeArr = gcnew array<Type^>(2);
      
      // Create an instance of a Type array.
      myTypeArr->SetValue( int::typeid, 0 );
      myTypeArr->SetValue( int::typeid, 1 );
      
      // Get the PropertyInfo object for the indexed property Item, which has two integer parameters.
      PropertyInfo^ myPropInfo = myType->GetProperty( "Item", myTypeArr );
      
      // Display the property.
      Console::WriteLine( "The {0} property exists in MyClass1.", myPropInfo );
   }
   catch ( NullReferenceException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Source : {0}", e->Source );
      Console::WriteLine( "Message : {0}", e->Message );
   }

}


using System;
using System.Reflection;
class MyClass1
{
    private int [,] myArray = {{1,2},{3,4}};
    // Declare an indexer.
    public int this [int i,int j]
    {
        get
        {
            return myArray[i,j];
        }
        set
        {
            myArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get the Type object.
            Type myType=typeof(MyClass1);
            Type[] myTypeArr = new Type[2];
            // Create an instance of a Type array.
            myTypeArr.SetValue(typeof(int),0);
            myTypeArr.SetValue(typeof(int),1);
            // Get the PropertyInfo object for the indexed property Item, which has two integer parameters.
            PropertyInfo myPropInfo = myType.GetProperty("Item", myTypeArr);
            // Display the property.
            Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString());
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    }
}
Imports System.Reflection

Module Module1
    Class MyClass1
        Private myArray As Integer(,) = {{1, 2}, {3, 4}}
        ' Declare an indexer.
        Default Public Property Item(ByVal i As Integer, ByVal j As Integer) As Integer
            Get
                Return myArray(i, j)
            End Get
            Set(ByVal Value As Integer)

                myArray(i, j) = Value
            End Set
        End Property
    End Class

    Public Class MyTypeClass
        Public Shared Sub Main()
            Try
                ' Get the Type Object.
                Dim myType As Type = GetType(MyClass1)
                Dim myTypeArr(1) As Type
                ' Create an instance of a Type array.
                myTypeArr.SetValue(GetType(Integer), 0)
                myTypeArr.SetValue(GetType(Integer), 1)
                ' Get the PropertyInfo object for the indexed property Item, which has two integer parameters. 
                Dim myPropInfo As PropertyInfo = myType.GetProperty("Item", myTypeArr)
                ' Display the property.
                Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString())
            Catch e As NullReferenceException
                Console.WriteLine("An exception occurred.")
                Console.WriteLine("Source : {0}", e.Source.ToString())
                Console.WriteLine("Message : {0}", e.Message.ToString())
            End Try
        End Sub
    End Class
End Module 'Module1

Remarks

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

name 검색은 대/소문자를 구분 합니다.The search for name is case-sensitive. 검색 public static 및 public 인스턴스 속성을 포함합니다.The search includes public static and public instance properties.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

GetProperty(String, Type, Type[])

지정된 인수 형식과 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType, Type[] types);
member this.GetProperty : string * Type * Type[] -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type * Type[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type * Type[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, returnType As Type, types As Type()) As PropertyInfo

Parameters

name
String

가져올 공용 속성의 이름이 포함된 문자열입니다.The string containing the name of the public property to get.

returnType
Type

속성의 반환 형식입니다.The return type of the property.

types
Type[]

가져올 인덱싱된 속성에 대한 매개 변수의 수, 차수, 형식 등을 나타내는 Type 개체 배열입니다.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-또는--or- 인덱싱되지 않은 속성을 가져오기 위한 Type 형식의 빈 배열입니다(즉, Type[] types = new Type[0]).An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

Returns

PropertyInfo

지정된 인수 형식과 일치하는 매개 변수를 가진 공용 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the public property whose parameters match the specified argument types, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가지며 지정된 인수 형식과 일치하는 속성이 둘 이상 발견되었습니다.More than one property is found with the specified name and matching the specified argument types.

namenull입니다.name is null.

-또는--or- typesnull입니다.types is null.

types는 다차원입니다.types is multidimensional.

types의 요소가 null입니다.An element of types is null.

Remarks

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

name 검색은 대/소문자를 구분 합니다.The search for name is case-sensitive. 검색 public static 및 public 인스턴스 속성을 포함합니다.The search includes public static and public instance properties.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

GetProperty(String, Type, Type[], ParameterModifier[])

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types and modifiers.

public:
 System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers);
member this.GetProperty : string * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
abstract member GetProperty : string * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, returnType As Type, types As Type(), modifiers As ParameterModifier()) As PropertyInfo

Parameters

name
String

가져올 공용 속성의 이름이 포함된 문자열입니다.The string containing the name of the public property to get.

returnType
Type

속성의 반환 형식입니다.The return type of the property.

types
Type[]

가져올 인덱싱된 속성에 대한 매개 변수의 수, 차수, 형식 등을 나타내는 Type 개체 배열입니다.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-또는--or- 인덱싱되지 않은 속성을 가져오기 위한 Type 형식의 빈 배열입니다(즉, Type[] types = new Type[0]).An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

modifiers
ParameterModifier[]

ParameterModifier 배열에서 해당하는 요소와 연관된 특성을 나타내는 types 개체 배열입니다.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. 기본 바인더에서는 이 매개 변수를 처리하지 않습니다.The default binder does not process this parameter.

Returns

PropertyInfo

지정된 요구 사항과 일치하는 public 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the public property that matches the specified requirements, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가지며 지정된 인수 형식 및 수정자와 일치하는 속성이 둘 이상 발견되었습니다.More than one property is found with the specified name and matching the specified argument types and modifiers.

namenull입니다.name is null.

-또는--or- typesnull입니다.types is null.

types는 다차원입니다.types is multidimensional.

-또는--or- modifiers는 다차원입니다.modifiers is multidimensional.

-또는--or- typesmodifiers의 길이가 동일하지 않습니다.types and modifiers do not have the same length.

types의 요소가 null입니다.An element of types is null.

Examples

다음 예제에서는 MyPropertyClass에 해당 하는 Type 개체를 가져오고 GetProperty 메서드에 전달 된 인수를 사용 하 여이 클래스의 인덱싱된 속성을 검색 합니다.The following example obtains a Type object corresponding to MyPropertyClass, and the indexed property of this class is retrieved using the arguments passed to the GetProperty method.

using namespace System;
using namespace System::Reflection;
public ref class MyPropertyClass
{
private:
   array<int, 2>^ myPropertyArray;

public:

   property int Item [int, int]
   {
      // Declare an indexer.
      int get( int i, int j )
      {
         return myPropertyArray[ i,j ];
      }

      void set( int i, int j, int value )
      {
         myPropertyArray[ i,j ] = value;
      }

   }

};

int main()
{
   try
   {
      Type^ myType = MyPropertyClass::typeid;
      array<Type^>^myTypeArray = gcnew array<Type^>(2);
      
      // Create an instance of the Type array representing the number, order
      // and type of the parameters for the property.
      myTypeArray->SetValue( int::typeid, 0 );
      myTypeArray->SetValue( int::typeid, 1 );
      
      // Search for the indexed property whose parameters match the
      // specified argument types and modifiers.
      PropertyInfo^ myPropertyInfo = myType->GetProperty( "Item", int::typeid, myTypeArray, nullptr );
      Console::WriteLine( "{0}.{1} has a property type of {2}", myType->FullName, myPropertyInfo->Name, myPropertyInfo->PropertyType );
   }
   catch ( Exception^ ex ) 
   {
      Console::WriteLine( "An exception occurred {0}", ex->Message );
   }

}

using System;
using System.Reflection;
public class MyPropertyClass
{
    private int [,] myPropertyArray = new int[10,10];
    // Declare an indexer.
    public int this [int i,int j]
    {
        get
        {
            return myPropertyArray[i,j];
        }
        set
        {
            myPropertyArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main()
    {
        try
        {
            Type myType=typeof(MyPropertyClass);
            Type[] myTypeArray = new Type[2];
            // Create an instance of the Type array representing the number, order
            // and type of the parameters for the property.
            myTypeArray.SetValue(typeof(int),0);
            myTypeArray.SetValue(typeof(int),1);
            // Search for the indexed property whose parameters match the
            // specified argument types and modifiers.
            PropertyInfo myPropertyInfo = myType.GetProperty("Item",
                typeof(int),myTypeArray,null);
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name +
                " has a property type of " + myPropertyInfo.PropertyType);
         }
        catch(Exception ex)
        {
            Console.WriteLine("An exception occurred " + ex.Message);
        }
    }
}
Imports System.Reflection

Public Class MyPropertyClass
    Private myPropertyArray(9, 9) As Integer
    ' Declare an indexer.
    Default Public Property Item(ByVal i As Integer, ByVal j As Integer) As Integer
        Get
            Return myPropertyArray(i, j)
        End Get
        Set(ByVal Value As Integer)
            myPropertyArray(i, j) = Value
        End Set
    End Property
End Class

Public Class MyTypeClass
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyPropertyClass)
            Dim myTypeArray(1) As Type
            ' Create an instance of a Type array representing the number, order 
            ' and type of the parameters for the property.
            myTypeArray.SetValue(GetType(Integer), 0)
            myTypeArray.SetValue(GetType(Integer), 1)
            ' Search for the indexed property whose parameters match the
            ' specified argument types and modifiers.
            Dim myPropertyInfo As PropertyInfo = myType.GetProperty("Item", _
                  GetType(Integer), myTypeArray, Nothing)
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + _
                  " has a property  type of " + myPropertyInfo.PropertyType.ToString())
        Catch ex As Exception
            Console.WriteLine("An exception occurred " + ex.Message.ToString())
        End Try
    End Sub
End Class

Remarks

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

기본 바인더는 modifiers 매개 변수 ParameterModifier를 처리 하지 않지만 추상 System.Reflection.Binder 클래스를 사용 하 여 modifiers처리 하는 사용자 지정 바인더를 작성할 수 있습니다.Although the default binder does not process ParameterModifier (the modifiers parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers. ParameterModifier는 COM interop를 통해 호출 하는 경우에만 사용 되며 참조에 의해 전달 된 매개 변수만 처리 합니다.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

name 검색은 대/소문자를 구분 합니다.The search for name is case-sensitive. 검색 public static 및 public 인스턴스 속성을 포함합니다.The search includes public static and public instance properties.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

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

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 속성을 지정된 바인딩 제약 조건으로 검색합니다.Searches for the specified property whose parameters match the specified argument types and modifiers, using the specified binding constraints.

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, Type ^ returnType, cli::array <Type ^> ^ types, cli::array <System::Reflection::ParameterModifier> ^ modifiers);
public System.Reflection.PropertyInfo GetProperty (string name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, Type returnType, Type[] types, System.Reflection.ParameterModifier[] modifiers);
abstract member GetProperty : string * System.Reflection.BindingFlags * System.Reflection.Binder * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
override this.GetProperty : string * System.Reflection.BindingFlags * System.Reflection.Binder * Type * Type[] * System.Reflection.ParameterModifier[] -> System.Reflection.PropertyInfo
Public Function GetProperty (name As String, bindingAttr As BindingFlags, binder As Binder, returnType As Type, types As Type(), modifiers As ParameterModifier()) As PropertyInfo

Parameters

name
String

가져올 속성의 이름이 포함된 문자열입니다.The string containing the name of the property to get.

bindingAttr
BindingFlags

검색 방법을 지정하는 열거형 값의 비트 조합입니다.A bitwise combination of the enumeration values that specify how the search is conducted.

-또는--or- null을 반환하는 Default입니다.Default to return null.

binder
Binder

속성 집합을 정의하고 바인딩을 활성화하는 개체입니다. 이 개체는 또한 리플렉션을 통해 오버로드된 메서드를 선택할 수 있고 인수 형식을 강제 변환할 수 있으며 멤버를 호출할 수도 있습니다.An object that defines a set of properties and enables binding, which can involve selection of an overloaded method, coercion of argument types, and invocation of a member through reflection.

-또는--or- Nothing를 사용하려면 null 참조(Visual Basic의 경우 DefaultBinder)입니다.A null reference (Nothing in Visual Basic), to use the DefaultBinder.

returnType
Type

속성의 반환 형식입니다.The return type of the property.

types
Type[]

가져올 인덱싱된 속성에 대한 매개 변수의 수, 차수, 형식 등을 나타내는 Type 개체 배열입니다.An array of Type objects representing the number, order, and type of the parameters for the indexed property to get.

-또는--or- 인덱싱되지 않은 속성을 가져오기 위한 Type 형식의 빈 배열입니다(즉, Type[] types = new Type[0]).An empty array of the type Type (that is, Type[] types = new Type[0]) to get a property that is not indexed.

modifiers
ParameterModifier[]

ParameterModifier 배열에서 해당하는 요소와 연관된 특성을 나타내는 types 개체 배열입니다.An array of ParameterModifier objects representing the attributes associated with the corresponding element in the types array. 기본 바인더에서는 이 매개 변수를 처리하지 않습니다.The default binder does not process this parameter.

Returns

PropertyInfo

지정된 요구 사항과 일치하는 속성을 나타내는 개체이며(있는 경우), 이러한 개체가 없으면 null을 반환합니다.An object representing the property that matches the specified requirements, if found; otherwise, null.

Implements

Exceptions

지정한 이름을 가지며 지정된 바인딩 제약 조건과 일치하는 속성이 둘 이상 발견되었습니다.More than one property is found with the specified name and matching the specified binding constraints.

namenull입니다.name is null.

-또는--or- typesnull입니다.types is null.

types는 다차원입니다.types is multidimensional.

-또는--or- modifiers는 다차원입니다.modifiers is multidimensional.

-또는--or- typesmodifiers의 길이가 동일하지 않습니다.types and modifiers do not have the same length.

types의 요소가 null입니다.An element of types is null.

Remarks

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않으면 속성은 개인으로 간주 되며, Visual Basic에서 Or| 를 | 사용 하 여 값을 결합 하 여 값을 결합 하는 BindingFlags.NonPublic BindingFlags.Instance BindingFlags.Static를 사용 해야 합니다.Otherwise the property is considered private, and you must use BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (in Visual Basic, combine the values using Or) to get it.

기본 바인더는 modifiers 매개 변수 ParameterModifier를 처리 하지 않지만 추상 System.Reflection.Binder 클래스를 사용 하 여 modifiers처리 하는 사용자 지정 바인더를 작성할 수 있습니다.Although the default binder does not process ParameterModifier (the modifiers parameter), you can use the abstract System.Reflection.Binder class to write a custom binder that does process modifiers. ParameterModifier는 COM interop를 통해 호출 하는 경우에만 사용 되며 참조에 의해 전달 된 매개 변수만 처리 합니다.ParameterModifier is only used when calling through COM interop, and only parameters that are passed by reference are handled.

다음 표에서는 형식에 대해 리플렉션할 때 Get 메서드에서 반환 되는 기본 클래스의 멤버를 보여 줍니다.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

멤버 유형Member Type 정적Static Static이 아니고Non-Static
생성자Constructor 아니요No 아니요No
필드Field 아니요No 예.Yes. 필드는 항상 이름 및 서명에서 숨겨집니다.A field is always hide-by-name-and-signature.
이벤트Event 해당 없음Not applicable 공용 형식 시스템 규칙의 상속 속성을 구현 하는 메서드의 것과 동일 된다는 것입니다.The common type system rule is that the inheritance is the same as that of the methods that implement the property. 리플렉션 속성 이름 및 서명으로 숨기기 취급 됩니다.Reflection treats properties as hide-by-name-and-signature. 참고 2 아래를 참조 하세요.See note 2 below.
방법Method 아니요No 예.Yes. (가상 및 비가상) 메서드 이름에서 숨김 또는 이름 및 서명으로 숨기기 수 있습니다.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
중첩된 형식Nested Type 아니요No 아니요No
속성Property 해당 없음Not applicable 공용 형식 시스템 규칙의 상속 속성을 구현 하는 메서드의 것과 동일 된다는 것입니다.The common type system rule is that the inheritance is the same as that of the methods that implement the property. 리플렉션 속성 이름 및 서명으로 숨기기 취급 됩니다.Reflection treats properties as hide-by-name-and-signature. 참고 2 아래를 참조 하세요.See note 2 below.
  1. 이름 및 서명으로 숨기기 모든 사용자 지정 한정자를 포함 하 여 서명의 부분 반환 형식, 매개 변수 형식, 센티널, 및 관리 되지 않는 호출 규칙을 고려 합니다.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. 이것은 이진 비교 합니다.This is a binary comparison.

  2. 리플렉션, 속성 및 이벤트는 이름 및 서명에서 숨겨집니다.For reflection, properties and events are hide-by-name-and-signature. 기본 클래스에서 get 및 set 접근자 모두를 사용 하 여 속성을 갖지만 파생된 클래스에 get 접근자만 하는 경우 파생된 클래스 속성을 기본 클래스 속성 숨기고 기본 클래스의 setter를 액세스할 수 없습니다.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. 사용자 지정 특성의 일부분이 아닌 공용 형식 시스템입니다.Custom attributes are not part of the common type system.

다음 BindingFlags 필터 플래그는 검색에 포함할 속성을 정의 하는 데 사용할 수 있습니다.The following BindingFlags filter flags can be used to define which properties to include in the search:

  • 반환을 얻으려면 BindingFlags.Instance 또는 BindingFlags.Static 중 하나를 지정 해야 합니다.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • 검색에 공용 속성을 포함 하려면 BindingFlags.Public를 지정 합니다.Specify BindingFlags.Public to include public properties in the search.

  • 검색에 public이 아닌 속성 (즉, private, internal 및 protected 속성)을 포함 하려면 BindingFlags.NonPublic를 지정 합니다.Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • 계층 구조에서 publicprotected 정적 멤버를 포함 하도록 BindingFlags.FlattenHierarchy를 지정 합니다. 상속 된 클래스의 정적 멤버 private 포함 되지 않습니다.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

다음 BindingFlags 한정자 플래그를 사용 하 여 검색의 작동 방식을 변경할 수 있습니다.The following BindingFlags modifier flags can be used to change how the search works:

  • name의 대/소문자를 무시 하려면 BindingFlags.IgnoreCase 합니다.BindingFlags.IgnoreCase to ignore the case of name.

  • 단순히 상속 된 속성이 아닌 Type에 선언 된 속성만 검색 BindingFlags.DeclaredOnly 합니다.BindingFlags.DeclaredOnly to search only the properties declared on the Type, not properties that were simply inherited.

자세한 내용은 System.Reflection.BindingFlags을 참조하세요.See System.Reflection.BindingFlags for more information.

현재 Type가 생성 된 제네릭 형식을 나타내는 경우이 메서드는 형식 매개 변수를 적절 한 형식 인수로 대체 하 여 PropertyInfo을 반환 합니다.If the current Type represents a constructed generic type, this method returns the PropertyInfo with the type parameters replaced by the appropriate type arguments.

현재 Type가 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우이 메서드는 클래스 제약 조건의 속성을 검색 합니다.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the properties of the class constraint.

인덱서 및 기본 속성Indexers and Default Properties

Visual Basic 2005Visual Basic 2005, Visual C# 2005Visual C# 2005Visual C++ 2005Visual C++ 2005는 인덱싱된 속성에 액세스 하기 위한 간단한 구문을 포함 하 고 인덱싱된 속성 하나를 해당 형식에 대 한 기본값으로 사용할 수 있도록 합니다., Visual C# 2005Visual C# 2005, and Visual C++ 2005Visual C++ 2005 have simplified syntax for accessing indexed properties and allow one indexed property to be a default for its type. 예를 들어 myList 변수가 ArrayList를 참조 하는 경우 구문 myList[3] (Visual Basic의myList(3))는 인덱스가 3 인 요소를 검색 합니다.For example, if the variable myList refers to an ArrayList, the syntax myList[3] (myList(3) in Visual Basic) retrieves the element with the index of 3. 속성을 오버 로드할 수 있습니다.You can overload the property.

에서 C#이 기능을 인덱서 라고 하며 이름으로 참조할 수 없습니다.In C#, this feature is called an indexer and cannot be referred to by name. 기본적으로 C# 인덱서 메타 데이터에 "Item" 이라는 인덱싱된 속성으로 나타납니다.By default, a C# indexer appears in metadata as an indexed property named "Item". 그러나 클래스 라이브러리 개발자는 IndexerNameAttribute 특성을 사용 하 여 메타 데이터의 인덱서 이름을 변경할 수 있습니다.However, a class library developer can use the IndexerNameAttribute attribute to change the name of the indexer in the metadata. 예를 들어 String 클래스에는 Chars[]라는 인덱서가 있습니다.For example, the String class has an indexer named Chars[]. C# 이외의 언어를 사용 하 여 만든 인덱싱된 속성 이름도 항목 이외의 있을 수 있습니다.Indexed properties created using languages other than C# can have names other than Item, as well.

형식에 기본 속성이 있는지 확인 하려면 GetCustomAttributes(Type, Boolean) 메서드를 사용 하 여 DefaultMemberAttribute 특성을 테스트 합니다.To determine whether a type has a default property, use the GetCustomAttributes(Type, Boolean) method to test for the DefaultMemberAttribute attribute. 형식이 DefaultMemberAttribute경우 MemberName 속성은 기본 속성의 이름을 반환 합니다.If the type has DefaultMemberAttribute, the MemberName property returns the name of the default property.

See also

Applies to