FieldAttributes Wyliczenie

Definicja

Określa flagi opisujące atrybuty pola.

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

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
Dziedziczenie
FieldAttributes
Atrybuty

Pola

Nazwa Wartość Opis
Assembly 3

Określa, że pole jest dostępne w całym zestawie.

FamANDAssem 2

Określa, że pole jest dostępne tylko przez podtypy w tym zestawie.

Family 4

Określa, że pole jest dostępne tylko według typów i podtypów.

FamORAssem 5

Określa, że pole jest dostępne dla podtypów w dowolnym miejscu, a także w całym tym zestawie.

FieldAccessMask 7

Określa poziom dostępu danego pola.

HasDefault 32768

Określa, że pole ma wartość domyślną.

HasFieldMarshal 4096

Określa, że pole ma informacje o marshalingu.

HasFieldRVA 256

Określa, że pole ma względny adres wirtualny (RVA). RVA to lokalizacja treści metody na bieżącym obrazie jako adres względem początku pliku obrazu, w którym znajduje się.

InitOnly 32

Określa, że pole jest inicjowane tylko i może być ustawione tylko w treści konstruktora.

Literal 64

Określa, że wartość pola to stała czas kompilacji (statyczna lub wczesna granica). Każda próba ustawienia zgłasza błąd FieldAccessException.

NotSerialized 128

Określa, że pole nie musi być serializowane, gdy typ jest zdalny.

PinvokeImpl 8192

Zarezerwowane do użytku w przyszłości.

Private 1

Określa, że pole jest dostępne tylko przez typ nadrzędny.

PrivateScope 0

Określa, że nie można odwoływać się do pola.

Public 6

Określa, że pole jest dostępne dla każdego elementu członkowskiego, dla którego ten zakres jest widoczny.

ReservedMask 38144

Zarezerwowany.

RTSpecialName 1024

Określa, że środowisko uruchomieniowe języka wspólnego (wewnętrzne interfejsy API metadanych) powinno sprawdzić kodowanie nazw.

SpecialName 512

Określa specjalną metodę o nazwie opisującej sposób, w jaki metoda jest specjalna.

Static 16

Określa, że pole reprezentuje zdefiniowany typ lub jest to wystąpienie.

Przykłady

W tym przykładzie są tworzone trzy pola, a FieldAttributes wartości są wyświetlane. Wartość FieldAttributes może zawierać więcej niż jeden atrybut, na przykład zarówno, jak Public i Literal, jak pokazano w trzecim polu.

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
 */

Uwagi

FieldAttributes używa wartości z FieldAccessMask , aby zamaskować tylko części wartości atrybutu, które odnoszą się do ułatwień dostępu. Na przykład poniższy kod określa, czy Attributes ustawiono publiczny bit.

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));
}

Aby uzyskać klasę , najpierw pobierz klasę FieldAttributesType. W pliku Typepobierz element FieldInfo. W pliku FieldInfopobierz element Attributes.

Wyliczona wartość jest liczbą reprezentującą bitową wartość OR atrybutów zaimplementowanych w polu.

Dotyczy

Produkt Wersje
.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