Type.GetProperty Type.GetProperty Type.GetProperty Type.GetProperty Method

정의

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

오버로드

GetProperty(String) GetProperty(String) GetProperty(String) GetProperty(String)

지정된 이름의 public 속성을 검색합니다.Searches for the public property with the specified name.

GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags)

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

GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type)

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

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

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

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

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

GetProperty(String, Type, Type[], ParameterModifier[]) GetProperty(String, Type, Type[], ParameterModifier[]) GetProperty(String, Type, Type[], ParameterModifier[]) 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[]) GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) 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) GetProperty(String) GetProperty(String) GetProperty(String)

지정된 이름의 public 속성을 검색합니다.Searches for the public property with the specified name.

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

매개 변수

name
String String String String

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

반환

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

구현

예외

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

예제

다음 예제에서는 검색 된 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
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 'MyClass1

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 'Main
End Class 'MyTypeClass 

내부적으로이 속성은 참조 메타 데이터에서 이름이 "항목"입니다.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.

설명

검색 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. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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 한정자 (Shadows Visual basic에서).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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) GetProperty(String, BindingFlags) 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

매개 변수

name
String String String String

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

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

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

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

반환

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

구현

예외

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

예제

다음 예제에서는 사용자 정의 클래스의 형식을 검색, 해당 클래스의 속성을 검색 및 지정 된 바인딩 제약 조건에 따라 속성 이름을 표시 합니다.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
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 'Main
    End Class 'MyClass1
End Module 'Module1

설명

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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.

  • 지정 BindingFlags.NonPublic 검색에 public이 아닌 속성 (즉, 전용, 내부 및 보호 된 속성)을 포함 하도록 합니다.Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • 지정할 BindingFlags.FlattenHierarchy 하기로 publicprotected 정적 멤버를 계층 구조 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:

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

  • BindingFlags.DeclaredOnly 에 선언 된 속성만 검색할는 Type, 상속 된 속성이 없습니다.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 한정자 (Shadows Visual basic에서).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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type) GetProperty(String, Type)

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

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, Type ^ returnType);
public System.Reflection.PropertyInfo GetProperty (string name, Type returnType);
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

매개 변수

name
String String String String

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

returnType
Type Type Type Type

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

반환

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

구현

예외

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

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

예제

다음 예제에서는 하나의 속성이 있는 클래스를 정의 및 이름 및 형식의 속성을 검색 합니다.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
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 'MyClass1

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 'Main
End Class 'TestClass

설명

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

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

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

public:
 virtual System::Reflection::PropertyInfo ^ GetProperty(System::String ^ name, cli::array <Type ^> ^ types);
public System.Reflection.PropertyInfo GetProperty (string name, Type[] types);
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

매개 변수

name
String String String 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.

반환

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

구현

예외

지정한 이름을 가지며 지정된 인수 형식과 일치하는 속성이 둘 이상 발견되었습니다.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.

예제

다음 예제에서는 검색 된 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
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 'MyClass1

    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 'Main
    End Class 'MyTypeClass
End Module 'Module1

설명

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

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

지정된 인수 형식과 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument 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);
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

매개 변수

name
String String String String

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

returnType
Type Type Type 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.

반환

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

구현

예외

지정한 이름을 가지며 지정된 인수 형식과 일치하는 속성이 둘 이상 발견되었습니다.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.

설명

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

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

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 public 속성을 검색합니다.Searches for the specified public property whose parameters match the specified argument types and 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);
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

매개 변수

name
String String String String

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

returnType
Type Type Type 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.

반환

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

구현

예외

지정한 이름을 가지며 지정된 인수 형식 및 수정자와 일치하는 속성이 둘 이상 발견되었습니다.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.

예제

다음 예에서는 Type 개체에 해당 하 MyPropertyClass, 전달 되는 인수를 사용 하 여이 클래스의 인덱싱된 속성을 검색 하는 및를 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
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 'MyPropertyClass

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 'Main
End Class 'MyTypeClass

설명

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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.

기본 바인더를 처리 하지 않습니다 하지만 ParameterModifier (합니다 modifiers 매개 변수), 추상을 사용할 수 있습니다 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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) 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

매개 변수

name
String String String String

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

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

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

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

binder
Binder Binder 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 Type Type 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.

반환

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

구현

예외

지정한 이름을 가지며 지정된 바인딩 제약 조건과 일치하는 속성이 둘 이상 발견되었습니다.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.

설명

속성을 공용 접근자가 적어도 하나 있으면 반사를 공용으로 간주 됩니다.A property is considered public to reflection if it has at least one accessor that is public. 그렇지 않은 경우 속성은 개인으로 간주 하 고 사용 해야 합니다 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (Visual basic에서 사용 하 여 값을 결합 Or) 가져오려고 합니다.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.

기본 바인더를 처리 하지 않습니다 하지만 ParameterModifier (합니다 modifiers 매개 변수), 추상을 사용할 수 있습니다 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.

  • 지정 BindingFlags.NonPublic 검색에 public이 아닌 속성 (즉, 전용, 내부 및 보호 된 속성)을 포함 하도록 합니다.Specify BindingFlags.NonPublic to include non-public properties (that is, private, internal, and protected properties) in the search.

  • 지정할 BindingFlags.FlattenHierarchy 하기로 publicprotected 정적 멤버를 계층 구조 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:

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

  • BindingFlags.DeclaredOnly 에 선언 된 속성만 검색할는 Type, 상속 된 속성이 없습니다.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# 2005, 및 Visual 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] (myList(3) Visual Basic의) 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[Range]합니다.For example, the String class has an indexer named Chars[Range]. 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.

추가 정보

적용 대상