Bagikan melalui


FieldAttributes Enum

Definisi

Menentukan bendera yang menjelaskan atribut bidang.

Enumerasi ini mendukung kombinasi bitwise dari nilai yang termasuk di dalamnya.

public enum class FieldAttributes
[System.Flags]
public enum FieldAttributes
[System.Flags]
[System.Serializable]
public enum FieldAttributes
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum FieldAttributes
[<System.Flags>]
type FieldAttributes = 
[<System.Flags>]
[<System.Serializable>]
type FieldAttributes = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FieldAttributes = 
Public Enum FieldAttributes
Warisan
FieldAttributes
Atribut

Bidang

Assembly 3

Menentukan bahwa bidang dapat diakses di seluruh perakitan.

FamANDAssem 2

Menentukan bahwa bidang hanya dapat diakses oleh subjenis dalam rakitan ini.

Family 4

Menentukan bahwa bidang hanya dapat diakses berdasarkan jenis dan subjenis.

FamORAssem 5

Menentukan bahwa bidang dapat diakses oleh subjenis di mana saja, serta di seluruh perakitan ini.

FieldAccessMask 7

Menentukan tingkat akses bidang tertentu.

HasDefault 32768

Menentukan bahwa bidang memiliki nilai default.

HasFieldMarshal 4096

Menentukan bahwa bidang memiliki informasi marshaling.

HasFieldRVA 256

Menentukan bahwa bidang memiliki alamat virtual relatif (RVA). RVA adalah lokasi isi metode dalam gambar saat ini, sebagai alamat relatif terhadap awal file gambar tempatnya berada.

InitOnly 32

Menentukan bahwa bidang hanya diinisialisasi, dan hanya dapat diatur dalam isi konstruktor.

Literal 64

Menentukan bahwa nilai bidang adalah konstanta waktu kompilasi (statis atau terikat awal). Setiap upaya untuk mengaturnya akan melempar FieldAccessException.

NotSerialized 128

Menentukan bahwa bidang tidak harus diserialisasikan ketika jenisnya di-remote.

PinvokeImpl 8192

Disiapkan untuk penggunaan masa mendatang.

Private 1

Menentukan bahwa bidang hanya dapat diakses oleh jenis induk.

PrivateScope 0

Menentukan bahwa bidang tidak dapat dirujuk.

Public 6

Menentukan bahwa bidang dapat diakses oleh anggota mana pun yang cakupannya terlihat.

ReservedMask 38144

Dicadangkan.

RTSpecialName 1024

Menentukan bahwa runtime bahasa umum (API internal metadata) harus memeriksa pengodean nama.

SpecialName 512

Menentukan metode khusus, dengan nama yang menjelaskan bagaimana metodenya khusus.

Static 16

Menentukan bahwa bidang mewakili jenis yang ditentukan, atau merupakan per instans.

Contoh

Dalam contoh ini, tiga bidang dibangun dan FieldAttributes nilai ditampilkan. Nilai FieldAttributes dapat berisi lebih dari satu atribut, misalnya, baik Public dan Literal, seperti yang ditunjukkan di bidang ketiga.

using namespace System;
using namespace System::Reflection;
using namespace System::Security::Permissions;

public ref class Demo
{
private:
    // Make three fields:
    // The first field is private.
    String^ m_field;

    // The second field is public.
public:
    String^ Field;

    // The third field is public and literal. 
    literal String^ FieldC = "String C";

    Demo() { m_field = "String A"; Field = "String B"; }
};

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

void main()
{
    Console::WriteLine ("\nReflection.FieldAttributes");
    Demo^ d = gcnew 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 = Demo::typeid;

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

/* 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
 */
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
 */
Imports System.Reflection

Public Class Demo
    ' Declare three fields.
    ' The first field is private.
    Private m_field As String = "String A"

    'The second field is public.
    Public Field As String = "String B"

    ' The third field is public and const, hence also static
    ' and literal with a default value.
    Public Const FieldC As String = "String C"

End Class

Module Module1
    Sub Main()
        ' Create an instance of the Demo class.
        Dim d As New Demo()

        Console.WriteLine(vbCrLf & "Reflection.FieldAttributes")

        ' 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.
        '
        Dim myType As Type = GetType(Demo)

        Dim fiPrivate As FieldInfo = myType.GetField("m_field", _
            BindingFlags.NonPublic Or BindingFlags.Instance)
        DisplayField(d, fiPrivate)

        Dim fiPublic As FieldInfo = myType.GetField("Field", _
            BindingFlags.Public Or BindingFlags.Instance)
        DisplayField(d, fiPublic)

        Dim fiConstant As FieldInfo = myType.GetField("FieldC", _
            BindingFlags.Public Or BindingFlags.Static)
        DisplayField(d, fiConstant)
    End Sub

    Sub DisplayField(ByVal obj As Object, ByVal f As FieldInfo)

        ' Display the field name, value, and attributes.
        '
        Console.WriteLine("{0} = ""{1}""; attributes: {2}", _
            f.Name, f.GetValue(obj), f.Attributes)
    End Sub

End Module

' This code example produces the following output:
'
'm_field = "String A"; attributes: Private
'Field = "String B"; attributes: Public
'FieldC = "String C"; attributes: Public, Static, Literal, HasDefault

Keterangan

FieldAttributes menggunakan nilai dari FieldAccessMask untuk menutupi hanya bagian dari nilai atribut yang berkaitan dengan aksesibilitas. Misalnya, kode berikut menentukan apakah Attributes memiliki set bit publik.

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));
}
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));
}
Dim fi As FieldInfo = obj.GetType().GetField("field1")

If (fi.Attributes And FieldAttributes.FieldAccessMask) = _
    FieldAttributes.Public Then
    Console.WriteLine("{0:s} is public. Value: {1:d}", fi.Name, fi.GetValue(obj))
End If

Untuk mendapatkan FieldAttributes, pertama-tama dapatkan kelas Type. TypeDari , dapatkan FieldInfo. FieldInfoDari , dapatkan Attributes.

Nilai enumerasi adalah angka yang mewakili bitwise OR dari atribut yang diimplementasikan pada bidang .

Berlaku untuk