PropertyInfo.GetValue PropertyInfo.GetValue PropertyInfo.GetValue PropertyInfo.GetValue Method

정의

지정된 개체의 속성 값을 반환합니다.Returns the property value of a specified object.

오버로드

GetValue(Object) GetValue(Object) GetValue(Object) GetValue(Object)

지정된 개체의 속성 값을 반환합니다.Returns the property value of a specified object.

GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[])

인덱싱된 속성에 대해 선택적인 인덱스 값이 있는 지정된 개체의 속성 값을 반환합니다.Returns the property value of a specified object with optional index values for indexed properties.

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

파생된 클래스에서 재정의된 경우 지정된 바인딩, 인덱스 및 문화별 정보가 있는 지정된 개체의 속성 값을 반환합니다.When overridden in a derived class, returns the property value of a specified object that has the specified binding, index, and culture-specific information.

GetValue(Object) GetValue(Object) GetValue(Object) GetValue(Object)

지정된 개체의 속성 값을 반환합니다.Returns the property value of a specified object.

public:
 System::Object ^ GetValue(System::Object ^ obj);
public object GetValue (object obj);
member this.GetValue : obj -> obj
Public Function GetValue (obj As Object) As Object

매개 변수

obj
Object Object Object Object

속성 값이 반환될 개체입니다.The object whose property value will be returned.

반환

지정된 개체의 속성 값입니다.The property value of the specified object.

예제

다음 예제에서는 정의 Planet 두 속성이 있는 클래스: Name, 전 세계적으로;의 이름 및 Distance, 지구에서 전 세계의 거리입니다.The following example defines a Planet class that has two properties: Name, the name of the planet; and Distance, the planet's distance from Earth. 이 예제에서는 인스턴스화합니다를 Planet 전달 Jupiter 지구를 나타내는 개체를 GetPropertyValues 속성 및 사용에 대 한 정보를 표시 하는 메서드는 GetValue 각각의 값을 가져오는 방법 Planet 속성입니다.The example instantiates a Planet object that represents the planet Jupiter and passes it to a GetPropertyValues method that displays information about the properties and uses the GetValue method to get the value of each Planet property.

using System;
using System.Reflection;

public class Planet
{
   private String planetName;
   private Double distanceFromEarth;
   
   public Planet(String name, Double distance)
   {
      planetName = name;
      distanceFromEarth = distance;
   } 

   public String Name
   { get { return planetName; } }
   
   public Double Distance 
   { get { return distanceFromEarth; }
     set { distanceFromEarth = value; } }
}

public class Example
{
   public static void Main()
   {
      Planet jupiter = new Planet("Jupiter", 3.65e08);
      GetPropertyValues(jupiter);
   }
   
   private static void GetPropertyValues(Object obj)
   {
      Type t = obj.GetType();
      Console.WriteLine("Type is: {0}", t.Name);
      PropertyInfo[] props = t.GetProperties();
      Console.WriteLine("Properties (N = {0}):", 
                        props.Length);
      foreach (var prop in props)
         if (prop.GetIndexParameters().Length == 0)
            Console.WriteLine("   {0} ({1}): {2}", prop.Name,
                              prop.PropertyType.Name,
                              prop.GetValue(obj));
         else
            Console.WriteLine("   {0} ({1}): <Indexed>", prop.Name,
                              prop.PropertyType.Name);
                                        
   }
}
// The example displays the following output:
//       Type is: Planet
//       Properties (N = 2):
//          Name (String): Jupiter
//          Distance (Double): 365000000
Imports System.Reflection

Public Class Planet
   Private planetName As String
   Private distanceFromEarth As Double
   
   Public Sub New(name As String, distance As Double)
      planetName = name
      distanceFromEarth = distance
   End Sub 

   Public ReadOnly Property Name As String
      Get
         Return planetName
      End Get
   End Property
   
   Public Property Distance As Double
      Get
         Return distanceFromEarth
      End Get
      Set
         distanceFromEarth = value
      End Set
   End Property
End Class

Module Example
   Public Sub Main()
      Dim jupiter As New Planet("Jupiter", 3.65e08);
      GetPropertyValues(jupiter)
   End Sub
   
   Private Sub GetPropertyValues(obj As Object)
      Dim t As Type = obj.GetType()
      Console.WriteLine("Type is: {0}", t.Name)
      Dim props() As PropertyInfo = t.GetProperties()
      Console.WriteLine("Properties (N = {0}):", 
                        props.Length)
      For Each prop In props
         If prop.GetIndexParameters().Length = 0 Then
            Console.WriteLine("   {0} ({1}): {2}", prop.Name,
                              prop.PropertyType.Name,
                              prop.GetValue(obj))
         Else
            Console.WriteLine("   {0} ({1}): <Indexed>", prop.Name,
                              prop.PropertyType.Name)
         End If                  
      Next                         
   End Sub
End Module
' The example displays the following output:
'       Type is: Planet
'       Properties (N = 2):
'          Name (String): Jupiter
'          Distance (Double): 365000000

설명

호출 하는 GetValue(Object) 인덱싱되지 않은 속성의 값을 검색 하는 오버 로드; 메서드가 throw 하는 인덱싱된 속성의 값을 검색 하려는 경우는 TargetParameterCountException 예외입니다.You call the GetValue(Object) overload to retrieve the value of a non-indexed property; if you try to retrieve the value of an indexed property, the method throws a TargetParameterCountException exception. 속성이 인덱싱 또는 호출 하는 것을 확인할 수는 GetIndexParameters 메서드.You can determine whether a property is indexed or not by calling the GetIndexParameters method. 하는 경우 반환 된 길이 ParameterInfo 배열이 0, 속성이 인덱싱되지 않은 합니다.If the length of the returned ParameterInfo array is zero, the property is not indexed.

추상에 대 한 구현을 제공 하는 편리한 방법입니다 GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) 메서드를 BindingFlags 매개 변수 설정 BindingFlags.DefaultBinder 로 설정 null로 설정 하는 인덱스 값의 개체 배열 null, 하며 CultureInfonull합니다.This is a convenience method that provides an implementation for the abstract GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) method with the BindingFlags parameter set to BindingFlags.Default, the Binder set to null, the object array of index values set to null, and the CultureInfo set to null.

GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[])

인덱싱된 속성에 대해 선택적인 인덱스 값이 있는 지정된 개체의 속성 값을 반환합니다.Returns the property value of a specified object with optional index values for indexed properties.

public:
 virtual System::Object ^ GetValue(System::Object ^ obj, cli::array <System::Object ^> ^ index);
public virtual object GetValue (object obj, object[] index);
abstract member GetValue : obj * obj[] -> obj
override this.GetValue : obj * obj[] -> obj
Public Overridable Function GetValue (obj As Object, index As Object()) As Object

매개 변수

obj
Object Object Object Object

속성 값이 반환될 개체입니다.The object whose property value will be returned.

index
Object[]

인덱싱된 속성에 대한 선택적 인덱스 값입니다.Optional index values for indexed properties. 인덱싱된 속성에 대한 인덱스는 0부터 시작합니다.The indexes of indexed properties are zero-based. 인덱싱되지 않은 속성에 대해서는 이 값이 null이어야 합니다.This value should be null for non-indexed properties.

반환

지정된 개체의 속성 값입니다.The property value of the specified object.

구현

예외

index 배열에 필요한 인수의 형식이 포함되어 있지 않습니다.The index array does not contain the type of arguments needed.

또는-or- 속성의 get 접근자를 찾을 수 없습니다.The property's get accessor is not found.

Windows 스토어 앱용 .NET 또는 이식 가능한 클래스 라이브러리에서 대신 Exception을 catch합니다.In the .NET for Windows Store apps or the Portable Class Library, catch Exception instead.

개체가 대상 형식과 일치하지 않거나 속성이 인스턴스 속성이지만 objnull입니다.The object does not match the target type, or a property is an instance property but obj is null.

index의 매개 변수 개수가 인덱싱된 속성 작업의 매개 변수 개수와 일치하지 않습니다.The number of parameters in index does not match the number of parameters the indexed property takes.

Windows 스토어 앱용 .NET 또는 이식 가능한 클래스 라이브러리에서 대신 기본 클래스 예외 MemberAccessException을 catch합니다.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.

클래스 내에서 개인 메서드 또는 보호된 메서드에 액세스하려는 잘못된 시도가 있었습니다.There was an illegal attempt to access a private or protected method inside a class.

속성 값을 검색하는 동안 오류가 발생했습니다.An error occurred while retrieving the property value. 예를 들어, 인덱싱된 속성에 대해 지정된 인덱스 값이 범위를 벗어났습니다.For example, an index value specified for an indexed property is out of range. InnerException 속성은 오류가 발생한 원인을 나타냅니다.The InnerException property indicates the reason for the error.

예제

다음 예제에서는 인덱싱된 속성의 값을 가져오는 방법을 보여 줍니다.The following example shows how to get the value of an indexed property. 합니다 String.Chars[Range] 속성은 기본 속성 (C# 인덱서)을 String 클래스입니다.The String.Chars[Range] property is the default property (the indexer in C#) of the String class.

using System;
using System.Reflection;

class Example
{
    public static void Main()
    {
        string test = "abcdefghijklmnopqrstuvwxyz";

        // Get a PropertyInfo object representing the Chars property.
        PropertyInfo pinfo = typeof(string).GetProperty("Chars");

        // Show the first, seventh, and last letters
        ShowIndividualCharacters(pinfo, test, 0, 6, test.Length - 1);

        // Show the complete string.
        Console.Write("The entire string: ");
        for (int x = 0; x < test.Length; x++)
        {
            Console.Write(pinfo.GetValue(test, new Object[] {x}));
        }
        Console.WriteLine();
    }

    static void ShowIndividualCharacters(PropertyInfo pinfo, 
                                         object value,
                                         params int[] indexes)
    {
       foreach (var index in indexes) 
          Console.WriteLine("Character in position {0,2}: '{1}'",
                            index, pinfo.GetValue(value, new object[] { index }));
       Console.WriteLine();                          
    }                                      
}
// The example displays the following output:
//    Character in position  0: 'a'
//    Character in position  6: 'g'
//    Character in position 25: 'z'
//    
//    The entire string: abcdefghijklmnopqrstuvwxyz
Imports System.Reflection

Module Example
    Sub Main()
        Dim test As String = "abcdefghijklmnopqrstuvwxyz"

        ' Get a PropertyInfo object representing the Chars property.
        Dim pinfo As PropertyInfo = GetType(String).GetProperty("Chars")

        ' Show the first, seventh, and last characters.
        ShowIndividualCharacters(pinfo, test, { 0, 6, test.Length - 1 })

        ' Show the complete string.
        Console.Write("The entire string: ")
        For x As Integer = 0 To test.Length - 1
            Console.Write(pinfo.GetValue(test, { x }))
        Next
        Console.WriteLine()
    End Sub

    Sub ShowIndividualCharacters(pinfo As PropertyInfo, 
                                 value As Object, 
                                 ParamArray indexes() As Integer)
       For Each index In indexes 
          Console.WriteLine("Character in position {0,2}: '{1}'",
                            index, pinfo.GetValue(value, { index }))
       Next
       Console.WriteLine()                          
    End Sub   
End Module
' The example displays the following output:
'       Character in position  0: 'a'
'       Character in position  6: 'g'
'       Character in position 25: 'z'
'       
'       The entire string: abcdefghijklmnopqrstuvwxyz

설명

속성을 인덱싱 되었는지 여부를 확인 하려면 사용 된 GetIndexParameters 메서드.To determine whether a property is indexed, use the GetIndexParameters method. 결과 배열에 0 (영) 요소가 속성은 인덱싱되지 않습니다.If the resulting array has 0 (zero) elements, the property is not indexed.

추상에 대 한 구현을 제공 하는 편리한 방법입니다 GetValue 메서드를 BindingFlags 의 매개 변수 DefaultBinder 로 설정 null, 및 CultureInfonull합니다.This is a convenience method that provides an implementation for the abstract GetValue method with a BindingFlags parameter of Default, the Binder set to null, and the CultureInfo set to null.

정적 속성 형식, 개별이 아닌 개체에 속해 있으므로 전달 하 여 정적 속성을 가져옵니다 null 개체 인수입니다.Because static properties belong to the type, not individual objects, get static properties by passing null as the object argument. 예를 들어, 다음 코드를 사용 하 여 정적 가져오려는 CurrentCulture 속성의 CultureInfo :For example, use the following code to get the static CurrentCulture property of CultureInfo :

PropertyInfo CurCultProp =   
    (typeof(CultureInfo)).GetProperty("CurrentCulture");   
Console.WriteLine("CurrCult: " +  
    CurCultProp.GetValue(null,null));  

사용 하 여 GetValue 메서드를 먼저 클래스를 가져옵니다 Type합니다.To use the GetValue method, first get the class Type. Type, 가져오기는 PropertyInfo합니다.From the Type, get the PropertyInfo. PropertyInfo를 사용 하 여를 GetValue 메서드.From the PropertyInfo, use the GetValue method.

참고

부터 합니다 .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1,이 메서드를 사용 하 여 호출자에 게 부여 된 경우 public이 아닌 멤버에 액세스할 수 있습니다 ReflectionPermission 사용 하 여는 ReflectionPermissionFlag.RestrictedMemberAccess 플래그 및 public이 아닌 멤버의 권한 부여 집합 호출자 에게만 부여 된 집합 또는 하위 집합 그 합니다.Starting with the .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (참조 리플렉션의 보안 고려 사항.)(See Security Considerations for Reflection.)

이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5.NET Framework 3.5 이상을 대상으로 해야 합니다.To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

보안

ReflectionPermission
호출 될 때 런타임에 바인딩된 메커니즘을 통해 같은 InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])합니다.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). 연관된 열거형: MemberAccessAssociated enumeration: MemberAccess.

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

파생된 클래스에서 재정의된 경우 지정된 바인딩, 인덱스 및 문화별 정보가 있는 지정된 개체의 속성 값을 반환합니다.When overridden in a derived class, returns the property value of a specified object that has the specified binding, index, and culture-specific information.

public:
 abstract System::Object ^ GetValue(System::Object ^ obj, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ index, System::Globalization::CultureInfo ^ culture);
public abstract object GetValue (object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] index, System.Globalization.CultureInfo culture);
abstract member GetValue : obj * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj

매개 변수

obj
Object Object Object Object

속성 값이 반환될 개체입니다.The object whose property value will be returned.

invokeAttr
BindingFlags BindingFlags BindingFlags BindingFlags

호출 특성을 지정하는 InvokeMethod, CreateInstance, Static, GetField, SetField, GetPropertySetProperty 열거형 멤버의 비트 조합입니다.A bitwise combination of the following enumeration members that specify the invocation attribute: InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty, and SetProperty. 적합한 호출 특성을 지정해야 합니다.You must specify a suitable invocation attribute. 예를 들어 정적 멤버를 호출하려면 Static 플래그를 설정합니다.For example, to invoke a static member, set the Static flag.

binder
Binder Binder Binder Binder

리플렉션을 통해 바인딩, 인수 형식의 강제 변환, 멤버 호출 및 MemberInfo 개체 검색을 사용할 수 있도록 하는 개체입니다.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. bindernull이면 기본 바인더가 사용됩니다.If binder is null, the default binder is used.

index
Object[]

인덱싱된 속성에 대한 선택적 인덱스 값입니다.Optional index values for indexed properties. 인덱싱되지 않은 속성에 대해서는 이 값이 null이어야 합니다.This value should be null for non-indexed properties.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

리소스를 지역화할 문화권입니다.The culture for which the resource is to be localized. 리소스가 이 문화권에 대해 지역화되지 않으면 Parent 속성이 연속적으로 호출되어 일치하는 문화권 정보를 검색합니다.If the resource is not localized for this culture, the Parent property will be called successively in search of a match. 이 값이 null이면 CurrentUICulture 속성에서 문화권별 정보를 가져옵니다.If this value is null, the culture-specific information is obtained from the CurrentUICulture property.

반환

지정된 개체의 속성 값입니다.The property value of the specified object.

구현

예외

index 배열에 필요한 인수의 형식이 포함되어 있지 않습니다.The index array does not contain the type of arguments needed.

또는-or- 속성의 get 접근자를 찾을 수 없습니다.The property's get accessor is not found.

개체가 대상 형식과 일치하지 않거나 속성이 인스턴스 속성이지만 objnull입니다.The object does not match the target type, or a property is an instance property but obj is null.

index의 매개 변수 개수가 인덱싱된 속성 작업의 매개 변수 개수와 일치하지 않습니다.The number of parameters in index does not match the number of parameters the indexed property takes.

클래스 내에서 개인 메서드 또는 보호된 메서드에 액세스하려는 잘못된 시도가 있었습니다.There was an illegal attempt to access a private or protected method inside a class.

속성 값을 검색하는 동안 오류가 발생했습니다.An error occurred while retrieving the property value. 예를 들어, 인덱싱된 속성에 대해 지정된 인덱스 값이 범위를 벗어났습니다.For example, an index value specified for an indexed property is out of range. InnerException 속성은 오류가 발생한 원인을 나타냅니다.The InnerException property indicates the reason for the error.

설명

속성을 인덱싱 되었는지 여부를 확인 하려면 사용 된 GetIndexParameters 메서드.To determine whether a property is indexed, use the GetIndexParameters method. 결과 배열에 0 (영) 요소가 속성은 인덱싱되지 않습니다.If the resulting array has 0 (zero) elements, the property is not indexed.

정적 속성 형식, 개별이 아닌 개체에 속해 있으므로 전달 하 여 정적 속성을 가져옵니다 null 개체 인수입니다.Because static properties belong to the type, not individual objects, get static properties by passing null as the object argument. 예를 들어, 다음 코드를 사용 하 여 정적 가져오려는 CurrentCulture 속성의 CultureInfo :For example, use the following code to get the static CurrentCulture property of CultureInfo :

PropertyInfo CurCultProp =   
       (typeof(CultureInfo)).GetProperty("CurrentCulture");   
Console.WriteLine("CurrCult: " +  
       CurCultProp.GetValue(null,null));  

사용 하 여 GetValue 메서드를 먼저 클래스를 가져옵니다 Type합니다.To use the GetValue method, first get the class Type. Type, 가져오기는 PropertyInfo합니다.From the Type, get the PropertyInfo. PropertyInfo를 사용 하 여를 GetValue 메서드.From the PropertyInfo, use the GetValue method.

참고

부터 합니다 .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1,이 메서드를 사용 하 여 호출자에 게 부여 된 경우 public이 아닌 멤버에 액세스할 수 있습니다 ReflectionPermission 사용 하 여는 ReflectionPermissionFlag.RestrictedMemberAccess 플래그 및 public이 아닌 멤버의 권한 부여 집합 호출자 에게만 부여 된 집합 또는 하위 집합 그 합니다.Starting with the .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (참조 리플렉션의 보안 고려 사항.)(See Security Considerations for Reflection.)

이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5.NET Framework 3.5 이상을 대상으로 해야 합니다.To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

보안

ReflectionPermission
호출 될 때 런타임에 바인딩된 메커니즘을 통해 같은 InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])합니다.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). 연관된 열거형: MemberAccessAssociated enumeration: MemberAccess.

추가 정보

적용 대상