다음을 통해 공유


FieldInfo.GetValue 메서드

파생 클래스에 재정의할 때 지정된 개체에서 지원하는 필드의 값을 반환합니다.

네임스페이스: System.Reflection
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public MustOverride Function GetValue ( _
    obj As Object _
) As Object
‘사용 방법
Dim instance As FieldInfo
Dim obj As Object
Dim returnValue As Object

returnValue = instance.GetValue(obj)
public abstract Object GetValue (
    Object obj
)
public:
virtual Object^ GetValue (
    Object^ obj
) abstract
public abstract Object GetValue (
    Object obj
)
public abstract function GetValue (
    obj : Object
) : Object

매개 변수

  • obj
    필드 값이 반환될 개체입니다.

반환 값

이 인스턴스에서 리플렉션된 필드 값을 포함하는 개체입니다.

예외

예외 형식 조건

TargetException

정적 필드가 아니고 obj가 Null 참조(Visual Basic의 경우 Nothing)인 경우

NotSupportedException

리터럴로 표시된 필드에 허용되는 리터럴 형식이 들어 있지 않은 경우

FieldAccessException

호출자에 이 필드에 액세스할 권한이 없는 경우

ArgumentException

메서드를 선언하거나 obj의 클래스에서 메서드를 상속하지 않은 경우

설명

정적 필드이면 obj가 무시됩니다. 비정적 필드의 경우 obj는 필드를 상속하거나 선언하는 클래스의 인스턴스여야 합니다. GetValue의 반환 형식은 Object입니다. 예를 들어, 필드가 부울 기본값을 갖는 경우 적절한 부울 값이 포함된 Object의 인스턴스가 반환됩니다. 값을 반환하기 전에 GetValue에서 사용자에게 액세스 권한이 있는지를 확인합니다.

참고

완전하게 신뢰할 수 있는 코드에 대해서는 액세스 제한이 무시됩니다. 즉, 코드를 완전히 신뢰할 수 있는 경우에는 리플렉션을 통해 private 생성자, 메서드, 필드 및 속성에 액세스하고 호출할 수 있습니다.

예제

' The following example demonstrates getting
' a field value directly, without having an object,
' by defining it as a static field.
Imports System
Imports System.Reflection

Class [MyClass]
    Public Shared val As [String] = "test"
    Public Shared Sub Main()
        Dim myf As FieldInfo = GetType([MyClass]).GetField("val")
        Console.WriteLine(myf.GetValue(Nothing))
        val = "hi"
        Console.WriteLine(myf.GetValue(Nothing))
    End Sub 'Main
End Class '[MyClass]
// The following example demonstrates getting
// a field value directly, without having an object,
// by defining it as a static field.

using System;
using System.Reflection;

class MyClass
{
    public static String val = "test";
    public static void Main()
    {
        FieldInfo myf = typeof(MyClass).GetField("val");
        Console.WriteLine(myf.GetValue(null));
        val = "hi";
        Console.WriteLine(myf.GetValue(null));
    }
}
// The following example demonstrates getting
// a field value directly, without having an object,
// by defining it as a static field.
using namespace System;
using namespace System::Reflection;

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

int main()
{
   FieldInfo^ myf = MyClass::typeid->GetField( "val" );
   Console::WriteLine( myf->GetValue( nullptr ) );
   MyClass::val = "hi";
   Console::WriteLine( myf->GetValue( nullptr ) );
}
// The following example demonstrates getting
// a field value directly, without having an object,
// by defining it as a static field.
import System.*;
import System.Reflection.*;

class MyClass
{
    public static String val = "test";

    public static void main(String[] args)
    {
        FieldInfo myf = MyClass.class.ToType().GetField("val");
        Console.WriteLine(myf.GetValue(null));
        val = "hi";
        Console.WriteLine(myf.GetValue(null));
    } //main
} //MyClass

다음 예제에서는 MyClass의 필드를 검색하고 필드 값을 표시합니다.

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

Public Class MyClass1
    Public myFieldA As String
    Public myFieldB As String

    Public Sub New()
        myFieldA = "A public field"
        myFieldB = "Another public field"
    End Sub 'New
End Class 'MyClass1

Public Class FieldInfo_GetValue

    Public Shared Sub Main()
        Dim myInstance As New MyClass1()
        ' Get the type of MyClass1.
        Dim myType As Type = GetType(MyClass1)
        Try
            ' Get the FieldInfo of MyClass1.
            Dim myFields As FieldInfo() = myType.GetFields((BindingFlags.Public Or BindingFlags.Instance))
            ' Display the values of the fields.
            Console.WriteLine(ControlChars.NewLine & "Displaying the values of the fields of {0}." & ControlChars.NewLine, myType.ToString())
            Dim i As Integer
            For i = 0 To myFields.Length - 1
                Console.WriteLine("The value of the field {0} is: {1}", myFields(i).Name, myFields(i).GetValue(myInstance))
            Next i
        Catch e As FieldAccessException
            Console.WriteLine("FieldAccessException : {0}", e.Message.ToString())
        Catch e As TargetException
            Console.WriteLine("TargetException : {0}", e.Message.ToString())
        Catch e As ExecutionEngineException
            Console.WriteLine("ExecutionEngineException : {0}", e.Message.ToString())
        Catch e As MemberAccessException
            Console.WriteLine("MemberAccessException : {0}", e.Message.ToString())
        Catch e As Exception
            Console.WriteLine("Exception : {0}", e.Message.ToString())
        End Try
    End Sub 'Main
End Class 'FieldInfo_GetValue
using System;
using System.Reflection;

public class MyClass
{
    public string myFieldA;
    public string myFieldB; 
    public MyClass()
    {
        myFieldA = "A public field";
        myFieldB = "Another public field";
    }
}

public class FieldInfo_GetValue
{
    public static void Main()
    {
        MyClass myInstance = new MyClass();
        // Get the type of MyClass.
        Type myType = typeof(MyClass);
        try
        {
            // Get the FieldInfo of MyClass.
            FieldInfo[] myFields = myType.GetFields(BindingFlags.Public 
                | BindingFlags.Instance);
            // Display the values of the fields.
            Console.WriteLine("\nDisplaying the values of the fields of {0}.\n",
                myType);
            for(int i = 0; i < myFields.Length; i++)
            {
                Console.WriteLine("The value of {0} is: {1}",
                    myFields[i].Name, myFields[i].GetValue(myInstance));
            }
        }  
        catch(FieldAccessException e)
        {
            Console.WriteLine("FieldAccessException : {0}", e.Message);
        }
        catch(TargetException e)
        {
            Console.WriteLine("TargetException : {0}", e.Message);
        }
        catch(ExecutionEngineException e)
        {
            Console.WriteLine("ExecutionEngineException : {0}", e.Message);
        }
        catch(MemberAccessException e)
        {
            Console.WriteLine("MemberAccessException : {0}", e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception : {0}", e.Message);
        }
    }
}
using namespace System;
using namespace System::Reflection;

public ref class MyClass
{
public:
   String^ myFieldA;
   String^ myFieldB;
   MyClass()
   {
      myFieldA = "A public field";
      myFieldB = "Another public field";
   }
};

int main()
{
   MyClass^ myInstance = gcnew MyClass;
   
   // Get the type of MyClass.
   Type^ myType = MyClass::typeid;
   try
   {
      // Get the FieldInfo of MyClass.
      array<FieldInfo^>^myFields = myType->GetFields( static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );

      // Display the values of the fields.
      Console::WriteLine( "\nDisplaying the values of the fields of {0}.\n", myType );
      for ( int i = 0; i < myFields->Length; i++ )
      {
         Console::WriteLine( "The value of {0} is: {1}", myFields[ i ]->Name, myFields[ i ]->GetValue( myInstance ) );

      }
   }
   catch ( FieldAccessException^ e ) 
   {
      Console::WriteLine( "FieldAccessException : {0}", e->Message );
   }
   catch ( TargetException^ e ) 
   {
      Console::WriteLine( "TargetException : {0}", e->Message );
   }
   catch ( ExecutionEngineException^ e ) 
   {
      Console::WriteLine( "ExecutionEngineException : {0}", e->Message );
   }
   catch ( MemberAccessException^ e ) 
   {
      Console::WriteLine( "MemberAccessException : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }
}

.NET Framework 보안

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

FieldInfo 클래스
FieldInfo 멤버
System.Reflection 네임스페이스
Object