FieldInfo.GetValue(Object) FieldInfo.GetValue(Object) FieldInfo.GetValue(Object) FieldInfo.GetValue(Object) Method

정의

파생 클래스에서 재정의된 경우 지정된 개체에서 지원하는 필드의 값을 반환합니다.When overridden in a derived class, returns the value of a field supported by a given object.

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

매개 변수

obj
Object Object Object Object

필드 값이 반환될 개체입니다.The object whose field value will be returned.

반환

이 인스턴스에서 반영한 필드의 값을 포함하는 개체입니다.An object containing the value of the field reflected by this instance.

구현

예외

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

필드가 비정적이며 objnull인 경우The field is non-static and obj is null.

필드가 리터럴로 표시되지만 필드에 허용된 리터럴 형식이 하나도 없는 경우A field is marked literal, but the field does not have one of the accepted literal types.

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

호출자에게 이 필드에 액세스할 수 있는 권한이 없는 경우The caller does not have permission to access this field.

obj 클래스에서 메서드를 선언하지도 않고 상속하지도 않은 경우The method is neither declared nor inherited by the class of obj.

예제

다음 예제에서는 GetValue 정적 필드의 값을 검색 하는 방법입니다.The following example uses the GetValue method to retrieve the value of a static field. 값을 obj 인수가 null합니다.Note that the value of the obj argument is null.

using namespace System;
using namespace System::Reflection;

ref class Example
{
  public:
     static String^ val = "test";
};

int main()
{
   FieldInfo^ fld = Example::typeid->GetField( "val" );
   Console::WriteLine(fld->GetValue(nullptr) );
   Example::val = "hi";
   Console::WriteLine(fld->GetValue(nullptr) );
}
// The example displays the following output:
//     test
//     hi
using System;
using System.Reflection;

class Example
{
    public static String val = "test";
    
    public static void Main()
    {
        FieldInfo fld = typeof(Example).GetField("val");
        Console.WriteLine(fld.GetValue(null));
        val = "hi";
        Console.WriteLine(fld.GetValue(null));
    }
}
// The example displays the following output:
//     test
//     hi
Imports System.Reflection

Class Example
    Public Shared val As String = "test"
    
    Public Shared Sub Main()
        Dim fld As FieldInfo = GetType(Example).GetField("val")
        Console.WriteLine(fld.GetValue(Nothing))
        val = "hi"
        Console.WriteLine(fld.GetValue(Nothing))
    End Sub 
End Class 
' The example displays the following output:
'     test
'     hi

다음 예제에서는 배열을 검색 FieldInfo 의 필드를 나타내는 개체를 FieldsClass 형식 및 호출 합니다 GetValue 에 대 한 각 필드의 값을 표시 하는 fieldsInst 개체입니다.The following example retrieves an array of FieldInfo objects that represents the fields of the FieldsClass type, and then calls the GetValue to display the value of each field for the fieldsInst object.

using namespace System;
using namespace System::Reflection;

public ref class FieldsClass
{
  public:
     String^ fieldA;
     String^ fieldB;

     FieldsClass()
     {
        fieldA = "A public field";
        fieldB = "Another public field";
     }
};

int main()
{
   FieldsClass^ fieldsInst = gcnew FieldsClass;
   
   // Get the type of FieldsClass.
   Type^ fieldsType = FieldsClass::typeid;

   // Get the FieldInfo of FieldsClass.
   array<FieldInfo^>^ fields = fieldsType->GetFields(static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance));

   // Display the values of the fields.
   Console::WriteLine("Displaying the values of the fields of {0}:", fieldsType);
   for (int i = 0; i < fields->Length; i++)
   {
      Console::WriteLine("   {0}:\t'{1}'", 
                         fields[i]->Name, fields[i]->GetValue(fieldsInst));
   }
}
// The example displays the following output:
//     Displaying the values of the fields of FieldsClass:
//        fieldA:      'A public field'
//        fieldB:      'Another public field'
using System;
using System.Reflection;

public class FieldsClass
{
    public string fieldA;
    public string fieldB;
     
    public FieldsClass()
    {
        fieldA = "A public field";
        fieldB = "Another public field";
    }
}

public class Example
{
    public static void Main()
    {
        FieldsClass fieldsInst = new FieldsClass();
        // Get the type of FieldsClass.
        Type fieldsType = typeof(FieldsClass);

        // Get an array of FieldInfo objects.
        FieldInfo[] fields = fieldsType.GetFields(BindingFlags.Public 
            | BindingFlags.Instance);
        // Display the values of the fields.
        Console.WriteLine("Displaying the values of the fields of {0}:",
            fieldsType);
        for(int i = 0; i < fields.Length; i++)
        {
            Console.WriteLine("   {0}:\t'{1}'",
                fields[i].Name, fields[i].GetValue(fieldsInst));
        }
    }
}
// The example displays the following output:
//     Displaying the values of the fields of FieldsClass:
//        fieldA:      'A public field'
//        fieldB:      'Another public field'
Imports System.Reflection

Public Class FieldsClass
    Public fieldA As String
    Public fieldB As String

    Public Sub New()
        fieldA = "A public field"
        fieldB = "Another public field"
    End Sub 
End Class 

Public Module Example
    Public Sub Main()
        Dim fieldsInst As New FieldsClass()
        ' Get the type of FieldsClass.
        Dim fieldsType As Type = GetType(FieldsClass)

        ' Get an array of FieldInfo objects.
        Dim fields As FieldInfo() = fieldsType.GetFields(BindingFlags.Public Or BindingFlags.Instance)
        ' Display the values of the fields.
        Console.WriteLine("Displaying the values of the fields of {0}:", fieldsType)
        For i As Integer = 0 To fields.Length - 1
            Console.WriteLine("   {0}:{2}'{1}'",
                fields(i).Name, fields(i).GetValue(fieldsInst), vbTab)
        Next 
    End Sub 
End Module
' The example displays the following output:
'     Displaying the values of the fields of FieldsClass:
'        fieldA:      'A public field'
'        fieldB:      'Another public field'

설명

정적 필드 이면 obj 무시 됩니다.If the field is static, obj is ignored. 비정적 필드에 대 한 obj 상속 하거나 필드를 선언 하는 클래스의 인스턴스가 있어야 합니다.For non-static fields, obj should be an instance of a class that inherits or declares the field. 반환 형식이 GetValueObject합니다.Note that the return type of GetValue is Object. 예를 들어 필드가 기본 부울 값을 갖는 경우 값을 인스턴스의 Object 와 적절 한 부울 값이 반환 됩니다.For example, if the field holds a Boolean primitive value, an instance of Object with the appropriate Boolean value is returned. 값을 반환 하기 전에 GetValue 사용자에 대 한 액세스 권한이 있는지 확인 합니다.Before returning the value, GetValue checks to see if the user has access permission.

참고

완전히 신뢰할 수 있는 코드에 대 한 액세스 제한이 없습니다.Access restrictions are ignored for fully trusted code. 즉, 개인 생성자, 메서드, 필드 및 속성 액세스 하 고 수 코드를 완전히 신뢰할 수 있는 경우 리플렉션을 통해 호출 합니다.That is, private constructors, methods, fields, and properties can be accessed and invoked through reflection whenever the code is fully trusted.

참고

부터 합니다 .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.

적용 대상

추가 정보