Ler em inglês

Compartilhar via


FieldAttributes Enumeração

Definição

Especifica os sinalizadores que descrevem os atributos de um campo.

Essa enumeração dá suporte a uma combinação bit a bit dos valores de membro.

C#
[System.Flags]
public enum FieldAttributes
C#
[System.Flags]
[System.Serializable]
public enum FieldAttributes
C#
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum FieldAttributes
Herança
FieldAttributes
Atributos

Campos

Nome Valor Description
Assembly 3

Especifica que o campo pode ser acessado em todo o assembly.

FamANDAssem 2

Especifica que o campo pode ser acessado somente por subtipos nesse assembly.

Family 4

Especifica que o campo pode ser acessado somente por tipos e subtipos.

FamORAssem 5

Especifica que o campo pode ser acessado por subtipos em qualquer lugar, bem como em todo este assembly.

FieldAccessMask 7

Especifica o nível de acesso de um determinado campo.

HasDefault 32768

Especifica que o campo tem um valor padrão.

HasFieldMarshal 4096

Especifica que o campo tem informações de marshaling.

HasFieldRVA 256

Especifica que o campo tem um endereço virtual relativo (RVA). O RVA é o local do corpo do método na imagem atual, como um endereço relativo para o início do arquivo de imagem na qual ele está localizado.

InitOnly 32

Especifica que o campo é inicializado apenas e pode ser definido somente no corpo de um construtor.

Literal 64

Especifica que o valor do campo é uma constante de tempo de compilação (associação estática ou inicial). Qualquer tentativa de definir inicia um FieldAccessException.

NotSerialized 128

Especifica que o campo não precisa ser serializado quando o tipo é remoto.

PinvokeImpl 8192

Reservado para uso futuro.

Private 1

Especifica que o campo pode ser acessado somente por tipo de pai.

PrivateScope 0

Especifica que o campo não pode ser referenciado.

Public 6

Especifica que o campo pode ser acessado por qualquer membro para quem este escopo está visível.

ReservedMask 38144

Reservado.

RTSpecialName 1024

Especifica que o common language runtime (APIs internas de metadados) deve verificar a codificação de nome.

SpecialName 512

Especifica um método especial, com o nome que descreve como o método é especial.

Static 16

Especifica que o campo representa o tipo definido ou então é por instância.

Exemplos

Neste exemplo, três campos são criados e os FieldAttributes valores são exibidos. Um FieldAttributes valor pode conter mais de um atributo, por exemplo, Public e Literal, conforme mostrado no terceiro campo.

C#
using System;
using System.Reflection;

public class Demo
{
    // Make three fields:
    // The first field is private.
    private string m_field = "String A";

    // The second field is public.
    public string Field = "String B";

    // The third field is public const (hence also literal and static),
    // with a default value.
    public const string FieldC = "String C";
}

public class Myfieldattributes
{
    public static void Main()
    {
        Console.WriteLine ("\nReflection.FieldAttributes");
        Demo d = new Demo();

        // Get a Type object for Demo, and a FieldInfo for each of
        // the three fields. Use the FieldInfo to display field
        // name, value for the Demo object in d, and attributes.
        //
        Type myType = typeof(Demo);
        FieldInfo fiPrivate = myType.GetField("m_field",
            BindingFlags.NonPublic | BindingFlags.Instance);
        DisplayField(d, fiPrivate);

        FieldInfo fiPublic = myType.GetField("Field",
            BindingFlags.Public | BindingFlags.Instance);
        DisplayField(d, fiPublic);

        FieldInfo fiConstant = myType.GetField("FieldC",
            BindingFlags.Public | BindingFlags.Static);
        DisplayField(d, fiConstant);
    }

    static void DisplayField(Object obj, FieldInfo f)
    {
        // Display the field name, value, and attributes.
        //
        Console.WriteLine("{0} = \"{1}\"; attributes: {2}",
            f.Name, f.GetValue(obj), f.Attributes);
    }
}

/* This code example produces the following output:

Reflection.FieldAttributes
m_field = "String A"; attributes: Private
Field = "String B"; attributes: Public
FieldC = "String C"; attributes: Public, Static, Literal, HasDefault
 */

Comentários

FieldAttributes usa o valor de FieldAccessMask para mascarar apenas as partes do valor do atributo que pertencem à acessibilidade. Por exemplo, o código a seguir determina se Attributes tem o bit público definido.

C#
FieldInfo fi = obj.GetType().GetField("field1");

if ((fi.Attributes & FieldAttributes.FieldAccessMask) ==
    FieldAttributes.Public)
{
    Console.WriteLine("{0:s} is public. Value: {1:d}", fi.Name, fi.GetValue(obj));
}

Para obter o FieldAttributes, primeiro obtenha a classe Type. TypeNo , obtenha o FieldInfo. FieldInfoNo , obtenha o Attributes.

O valor enumerado é um número que representa o OR bit a bit dos atributos implementados no campo.

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.6, 2.0, 2.1
UWP 10.0