FieldInfo.GetValue(Object) Método

Definição

Quando substituído em uma classe derivada, retorna o valor de um campo com suporte por um determinado objeto.

public abstract object GetValue (object obj);
public abstract object? GetValue (object? obj);

Parâmetros

obj
Object

O objeto cujo valor do campo será retornado.

Retornos

Um objeto que contém o valor do campo refletido por essa instância.

Implementações

Exceções

O campo é não estático e obj é null.

Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture Exception em vez disso.

Um campo é marcado como literal, mas o campo não tem um dos tipos de literal aceitos.

O chamador não tem permissão para acessar esse campo.

Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de classe base, MemberAccessException, em vez disso.

O método não está declarado nem é herdado pela classe de obj.

Exemplos

O exemplo a seguir usa o GetValue método para recuperar o valor de um campo estático. Observe que o valor do obj argumento é null.

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

O exemplo a seguir recupera uma matriz de FieldInfo objetos que representa os campos do FieldsClass tipo e chama o GetValue para exibir o valor de cada campo para o fieldsInst objeto .

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'

Comentários

Se o campo for estático, obj será ignorado. Para campos não estáticos, obj deve ser uma instância de uma classe que herda ou declara o campo. Observe que o tipo de retorno de GetValue é Object. Por exemplo, se o campo tiver um valor primitivo booliano, uma instância de Object com o valor booliano apropriado será retornada. Antes de retornar o valor, GetValue verifica se o usuário tem permissão de acesso.

Observação

As restrições de acesso são ignoradas para código totalmente confiável. Ou seja, construtores privados, métodos, campos e propriedades podem ser acessados e invocados por meio de reflexão sempre que o código for totalmente confiável.

Observação

A partir do .NET Framework 2.0 Service Pack 1, esse método poderá ser usado para acessar membros não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões dos membros não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.)

Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Confira também