Bagikan melalui


FieldBuilder Kelas

Definisi

Menentukan dan mewakili bidang. Kelas ini tidak dapat diwariskan.

public ref class FieldBuilder sealed : System::Reflection::FieldInfo
public ref class FieldBuilder abstract : System::Reflection::FieldInfo
public ref class FieldBuilder sealed : System::Reflection::FieldInfo, System::Runtime::InteropServices::_FieldBuilder
public sealed class FieldBuilder : System.Reflection.FieldInfo
public abstract class FieldBuilder : System.Reflection.FieldInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class FieldBuilder : System.Reflection.FieldInfo, System.Runtime.InteropServices._FieldBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FieldBuilder : System.Reflection.FieldInfo, System.Runtime.InteropServices._FieldBuilder
type FieldBuilder = class
    inherit FieldInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type FieldBuilder = class
    inherit FieldInfo
    interface _FieldBuilder
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FieldBuilder = class
    inherit FieldInfo
    interface _FieldBuilder
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Public MustInherit Class FieldBuilder
Inherits FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
Warisan
FieldBuilder
Atribut
Penerapan

Contoh

Contoh berikut mengilustrasikan penggunaan FieldBuilder kelas .

using System;
using System.Reflection;
using System.Reflection.Emit;

public class FieldBuilder_Sample
{
    private static Type? CreateType()
    {
        // Create an assembly.
        AssemblyName assemName = new AssemblyName();
        assemName.Name = "DynamicAssembly";
        AssemblyBuilder assemBuilder =
                       AssemblyBuilder.DefineDynamicAssembly(assemName, AssemblyBuilderAccess.Run);
        // Create a dynamic module in Dynamic Assembly.
        ModuleBuilder modBuilder = assemBuilder.DefineDynamicModule("DynamicModule");
        // Define a public class named "DynamicClass" in the assembly.
        TypeBuilder typBuilder = modBuilder.DefineType("DynamicClass", TypeAttributes.Public);

        // Define a private String field named "DynamicField" in the type.
        FieldBuilder fldBuilder = typBuilder.DefineField("DynamicField",
            typeof(string), FieldAttributes.Private | FieldAttributes.Static);
        // Create the constructor.
        Type[] constructorArgs = { typeof(String) };
        ConstructorBuilder constructor = typBuilder.DefineConstructor(
           MethodAttributes.Public, CallingConventions.Standard, constructorArgs);
        ILGenerator constructorIL = constructor.GetILGenerator();
        constructorIL.Emit(OpCodes.Ldarg_0);
        ConstructorInfo? superConstructor = typeof(Object).GetConstructor(new Type[0]);
        constructorIL.Emit(OpCodes.Call, superConstructor!);
        constructorIL.Emit(OpCodes.Ldarg_0);
        constructorIL.Emit(OpCodes.Ldarg_1);
        constructorIL.Emit(OpCodes.Stfld, fldBuilder);
        constructorIL.Emit(OpCodes.Ret);

        // Create the DynamicMethod method.
        MethodBuilder methBuilder = typBuilder.DefineMethod("DynamicMethod",
                             MethodAttributes.Public, typeof(String), null);
        ILGenerator methodIL = methBuilder.GetILGenerator();
        methodIL.Emit(OpCodes.Ldarg_0);
        methodIL.Emit(OpCodes.Ldfld, fldBuilder);
        methodIL.Emit(OpCodes.Ret);

        Console.WriteLine($"Name               : {fldBuilder.Name}");
        Console.WriteLine($"DeclaringType      : {fldBuilder.DeclaringType}");
        Console.WriteLine($"Type               : {fldBuilder.FieldType}");
        return typBuilder.CreateType();
    }

    public static void Main()
    {
        Type? dynType = CreateType();
        try
        {
            if (dynType is not null)
            {
                // Create an instance of the "HelloWorld" class.
                Object? helloWorld = Activator.CreateInstance(dynType, new Object[] { "HelloWorld" });
                // Invoke the "DynamicMethod" method of the "DynamicClass" class.
                Object? obj = dynType.InvokeMember("DynamicMethod",
                               BindingFlags.InvokeMethod, null, helloWorld, null);
                Console.WriteLine($"DynamicClass.DynamicMethod returned: \"{obj}\"");
            }
        }
        catch (MethodAccessException e)
        {
            Console.WriteLine($"{e.GetType().Name}: {e.Message}");
        }
    }
}
Imports System.Reflection
Imports System.Reflection.Emit

Public Module FieldBuilder_Sample
   Private Function CreateType() As Type
      ' Create an assembly.
      Dim assemName As New AssemblyName()
      assemName.Name = "DynamicAssembly"
      Dim assemBuilder As AssemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemName,
                                                AssemblyBuilderAccess.Run)
      ' Create a dynamic module in Dynamic Assembly.
      Dim modBuilder As ModuleBuilder = assemBuilder.DefineDynamicModule("DynamicModule")
      ' Define a public class named "DynamicClass" in the assembly.
      Dim typBuilder As TypeBuilder = modBuilder.DefineType("DynamicClass", 
                                          TypeAttributes.Public)
      ' Define a private String field named "DynamicField" in the type.
      Dim fldBuilder As FieldBuilder = typBuilder.DefineField("DynamicField",
                  GetType(String), FieldAttributes.Private Or FieldAttributes.Static)
      ' Create the constructor.
      Dim constructorArgs As Type() = {GetType(String)}
      Dim constructor As ConstructorBuilder = 
                  typBuilder.DefineConstructor(MethodAttributes.Public, 
                           CallingConventions.Standard, constructorArgs)
      Dim constructorIL As ILGenerator = constructor.GetILGenerator()
      constructorIL.Emit(OpCodes.Ldarg_0)
      Dim superConstructor As ConstructorInfo = GetType(Object).GetConstructor(New Type() {})
      constructorIL.Emit(OpCodes.Call, superConstructor)
      constructorIL.Emit(OpCodes.Ldarg_0)
      constructorIL.Emit(OpCodes.Ldarg_1)
      constructorIL.Emit(OpCodes.Stfld, fldBuilder)
      constructorIL.Emit(OpCodes.Ret)

      ' Create the DynamicMethod method.
      Dim methBuilder As MethodBuilder = typBuilder.DefineMethod("DynamicMethod", 
                        MethodAttributes.Public, GetType(String), Nothing)
      Dim methodIL As ILGenerator = methBuilder.GetILGenerator()
      methodIL.Emit(OpCodes.Ldarg_0)
      methodIL.Emit(OpCodes.Ldfld, fldBuilder)
      methodIL.Emit(OpCodes.Ret)

      Console.WriteLine($"Name               : {fldBuilder.Name}")
      Console.WriteLine($"DeclaringType      : {fldBuilder.DeclaringType}")
      Console.WriteLine($"Type               : {fldBuilder.FieldType}")
      Return typBuilder.CreateType()
   End Function 

   Public Sub Main()
      Dim dynType As Type = CreateType()
      Try  
        ' Create an instance of the "HelloWorld" class.
         Dim helloWorld As Object = Activator.CreateInstance(dynType, New Object() {"HelloWorld"})
         ' Invoke the "DynamicMethod" method of the "DynamicClass" class.
         Dim obj As Object = dynType.InvokeMember("DynamicMethod", 
                  BindingFlags.InvokeMethod, Nothing, helloWorld, Nothing)
         Console.WriteLine($"DynamicClass.DynamicMethod returned: ""{obj}""")
      Catch e As MethodAccessException
            Console.WriteLine($"{e.GetType().Name}: {e.Message}")
      End Try
   End Sub 
End Module

Keterangan

Dapatkan instans FieldBuilder dengan memanggil DefineField, , DefineInitializedDataatau DefineUninitializedData.

Catatan

Metode SetValue saat ini tidak didukung. Sebagai solusinya, ambil FieldInfo dengan mencerminkan pada jenis yang sudah selesai dan panggil SetValue untuk mengatur nilai bidang.

Konstruktor

FieldBuilder()

Menginisialisasi instans baru kelas FieldBuilder.

Properti

Attributes

Menunjukkan atribut bidang ini. Properti ini bersifat hanya baca.

CustomAttributes

Mendapatkan koleksi yang berisi atribut kustom anggota ini.

(Diperoleh dari MemberInfo)
DeclaringType

Menunjukkan referensi ke Type objek untuk jenis yang mendeklarasikan bidang ini. Properti ini bersifat hanya baca.

FieldHandle

Menunjukkan handel metadata internal untuk bidang ini. Properti ini bersifat hanya baca.

FieldHandle

RuntimeFieldHandleMendapatkan , yang merupakan handel ke representasi metadata internal bidang.

(Diperoleh dari FieldInfo)
FieldType

Type Menunjukkan objek yang mewakili tipe bidang ini. Properti ini bersifat hanya baca.

IsAssembly

Mendapatkan nilai yang menunjukkan apakah visibilitas potensial bidang ini dijelaskan oleh Assembly; yaitu, bidang terlihat paling banyak untuk jenis lain dalam rakitan yang sama, dan tidak terlihat oleh jenis turunan di luar rakitan.

(Diperoleh dari FieldInfo)
IsCollectible

Mendapatkan nilai yang menunjukkan apakah objek ini MemberInfo adalah bagian dari perakitan yang dipegang dalam koleksi AssemblyLoadContext.

(Diperoleh dari MemberInfo)
IsFamily

Mendapatkan nilai yang menunjukkan apakah visibilitas bidang ini dijelaskan oleh Family; yaitu, bidang hanya terlihat dalam kelas dan kelas turunannya.

(Diperoleh dari FieldInfo)
IsFamilyAndAssembly

Mendapatkan nilai yang menunjukkan apakah visibilitas bidang ini dijelaskan oleh FamANDAssem; yaitu, bidang dapat diakses dari kelas turunan, tetapi hanya jika berada dalam perakitan yang sama.

(Diperoleh dari FieldInfo)
IsFamilyOrAssembly

Mendapatkan nilai yang menunjukkan apakah visibilitas potensial bidang ini dijelaskan oleh FamORAssem; yaitu, bidang dapat diakses oleh kelas turunan di mana pun mereka berada, dan berdasarkan kelas dalam perakitan yang sama.

(Diperoleh dari FieldInfo)
IsInitOnly

Mendapatkan nilai yang menunjukkan apakah bidang hanya dapat diatur dalam isi konstruktor.

(Diperoleh dari FieldInfo)
IsLiteral

Mendapatkan nilai yang menunjukkan apakah nilai ditulis pada waktu kompilasi dan tidak dapat diubah.

(Diperoleh dari FieldInfo)
IsNotSerialized
Kedaluwarsa.

Mendapatkan nilai yang menunjukkan apakah bidang ini memiliki NotSerialized atribut .

(Diperoleh dari FieldInfo)
IsPinvokeImpl

Mendapatkan nilai yang menunjukkan apakah atribut yang PinvokeImpl sesuai diatur dalam FieldAttributes.

(Diperoleh dari FieldInfo)
IsPrivate

Mendapatkan nilai yang menunjukkan apakah bidang bersifat privat.

(Diperoleh dari FieldInfo)
IsPublic

Mendapatkan nilai yang menunjukkan apakah bidang bersifat publik.

(Diperoleh dari FieldInfo)
IsSecurityCritical

Mendapatkan nilai yang menunjukkan apakah bidang saat ini kritis keamanan atau keamanan-aman-kritis pada tingkat kepercayaan saat ini.

(Diperoleh dari FieldInfo)
IsSecuritySafeCritical

Mendapatkan nilai yang menunjukkan apakah bidang saat ini kritis keamanan aman pada tingkat kepercayaan saat ini.

(Diperoleh dari FieldInfo)
IsSecurityTransparent

Mendapatkan nilai yang menunjukkan apakah bidang saat ini transparan pada tingkat kepercayaan saat ini.

(Diperoleh dari FieldInfo)
IsSpecialName

Mendapatkan nilai yang menunjukkan apakah atribut yang SpecialName sesuai diatur dalam FieldAttributes enumerator.

(Diperoleh dari FieldInfo)
IsStatic

Mendapatkan nilai yang menunjukkan apakah bidang statis.

(Diperoleh dari FieldInfo)
MemberType

Mendapatkan nilai yang MemberTypes menunjukkan bahwa anggota ini adalah bidang .

(Diperoleh dari FieldInfo)
MetadataToken

Mendapatkan token yang mengidentifikasi modul dinamis saat ini dalam metadata.

MetadataToken

Mendapatkan nilai yang mengidentifikasi elemen metadata.

(Diperoleh dari MemberInfo)
Module

Mendapatkan modul di mana jenis yang berisi bidang ini sedang didefinisikan.

Module

Mendapatkan modul di mana jenis yang menyatakan anggota yang diwakili oleh saat ini MemberInfo ditentukan.

(Diperoleh dari MemberInfo)
Name

Menunjukkan nama bidang ini. Properti ini bersifat hanya baca.

ReflectedType

Menunjukkan referensi ke Type objek tempat objek ini diperoleh. Properti ini bersifat hanya baca.

ReflectedType

Mendapatkan objek kelas yang digunakan untuk mendapatkan instans ini dari MemberInfo.

(Diperoleh dari MemberInfo)

Metode

Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu.

(Diperoleh dari FieldInfo)
GetCustomAttributes(Boolean)

Mengembalikan semua atribut kustom yang ditentukan untuk bidang ini.

GetCustomAttributes(Boolean)

Saat ditimpa di kelas turunan, mengembalikan array semua atribut kustom yang diterapkan ke anggota ini.

(Diperoleh dari MemberInfo)
GetCustomAttributes(Type, Boolean)

Mengembalikan semua atribut kustom yang ditentukan untuk bidang ini yang diidentifikasi oleh jenis yang diberikan.

GetCustomAttributes(Type, Boolean)

Saat ditimpa di kelas turunan, mengembalikan array atribut kustom yang diterapkan ke anggota ini dan diidentifikasi oleh Type.

(Diperoleh dari MemberInfo)
GetCustomAttributesData()

Mengembalikan daftar CustomAttributeData objek yang mewakili data tentang atribut yang telah diterapkan ke anggota target.

(Diperoleh dari MemberInfo)
GetHashCode()

Mengembalikan kode hash untuk instans ini.

(Diperoleh dari FieldInfo)
GetModifiedFieldType()

Mendapatkan tipe objek bidang yang dimodifikasi.

(Diperoleh dari FieldInfo)
GetOptionalCustomModifiers()

Mendapatkan array jenis yang mengidentifikasi pengubah kustom opsional bidang.

(Diperoleh dari FieldInfo)
GetRawConstantValue()

Mengembalikan nilai harfiah yang terkait dengan bidang oleh pengkompilasi.

(Diperoleh dari FieldInfo)
GetRequiredCustomModifiers()

Mendapatkan array jenis yang mengidentifikasi pengubah kustom properti yang diperlukan.

(Diperoleh dari FieldInfo)
GetToken()

Mengembalikan token yang mewakili bidang ini.

GetType()

Menemukan atribut bidang kelas dan menyediakan akses ke metadata bidang.

(Diperoleh dari FieldInfo)
GetValue(Object)

Mengambil nilai bidang yang didukung oleh objek yang diberikan.

GetValueDirect(TypedReference)

Mengembalikan nilai bidang yang didukung oleh objek tertentu.

(Diperoleh dari FieldInfo)
HasSameMetadataDefinitionAs(MemberInfo)

Menentukan dan mewakili bidang. Kelas ini tidak dapat diwariskan.

(Diperoleh dari MemberInfo)
IsDefined(Type, Boolean)

Menunjukkan apakah atribut yang memiliki jenis yang ditentukan ditentukan pada bidang.

IsDefined(Type, Boolean)

Ketika ditimpa di kelas turunan, menunjukkan apakah satu atau beberapa atribut dari jenis yang ditentukan atau jenis turunannya diterapkan kepada anggota ini.

(Diperoleh dari MemberInfo)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
SetConstant(Object)

Mengatur nilai default bidang ini.

SetConstantCore(Object)

Saat ditimpa di kelas turunan, menetapkan nilai default bidang ini.

SetCustomAttribute(ConstructorInfo, Byte[])

Mengatur atribut kustom menggunakan blob atribut kustom tertentu.

SetCustomAttribute(CustomAttributeBuilder)

Mengatur atribut kustom menggunakan penyusun atribut kustom.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Saat ditimpa di kelas turunan, mengatur atribut kustom pada assembly ini.

SetMarshal(UnmanagedMarshal)
Kedaluwarsa.

Menjelaskan marshaling asli lapangan.

SetOffset(Int32)

Menentukan tata letak bidang.

SetOffsetCore(Int32)

Saat ditimpa di kelas turunan, menentukan tata letak bidang.

SetValue(Object, Object)

Mengatur nilai bidang yang didukung oleh objek yang diberikan.

(Diperoleh dari FieldInfo)
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Mengatur nilai bidang yang didukung oleh objek yang diberikan.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Saat ditimpa di kelas turunan, mengatur nilai bidang yang didukung oleh objek yang diberikan.

(Diperoleh dari FieldInfo)
SetValueDirect(TypedReference, Object)

Mengatur nilai bidang yang didukung oleh objek yang diberikan.

(Diperoleh dari FieldInfo)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

_FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang kemudian dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

_FieldBuilder.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

_FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

_FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

(Diperoleh dari FieldInfo)
_FieldInfo.GetType()

Mendapatkan objek yang Type mewakili jenis .FieldInfo

(Diperoleh dari FieldInfo)
_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang kemudian dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

(Diperoleh dari FieldInfo)
_FieldInfo.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

(Diperoleh dari FieldInfo)
_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

(Diperoleh dari FieldInfo)
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai.

(Diperoleh dari MemberInfo)
_MemberInfo.GetType()

Mendapatkan objek yang Type mewakili MemberInfo kelas .

(Diperoleh dari MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Mengambil informasi jenis untuk objek, yang kemudian dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka.

(Diperoleh dari MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1).

(Diperoleh dari MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Menyediakan akses ke properti dan metode yang diekspos oleh objek.

(Diperoleh dari MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Mengembalikan array dari semua atribut kustom yang ditentukan pada anggota ini, tidak termasuk atribut bernama, atau array kosong jika tidak ada atribut kustom.

(Diperoleh dari MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Mengembalikan array atribut kustom yang ditentukan pada anggota ini, diidentifikasi berdasarkan jenis, atau array kosong jika tidak ada atribut kustom dari jenis tersebut.

(Diperoleh dari MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

Menunjukkan apakah satu atau beberapa attributeType instans ditentukan pada anggota ini.

(Diperoleh dari MemberInfo)

Metode Ekstensi

GetCustomAttribute(MemberInfo, Type)

Mengambil atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu.

GetCustomAttribute(MemberInfo, Type, Boolean)

Mengambil atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu, dan secara opsional memeriksa leluhur anggota tersebut.

GetCustomAttribute<T>(MemberInfo)

Mengambil atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu.

GetCustomAttribute<T>(MemberInfo, Boolean)

Mengambil atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu, dan secara opsional memeriksa leluhur anggota tersebut.

GetCustomAttributes(MemberInfo)

Mengambil kumpulan atribut kustom yang diterapkan ke anggota tertentu.

GetCustomAttributes(MemberInfo, Boolean)

Mengambil kumpulan atribut kustom yang diterapkan ke anggota tertentu, dan secara opsional memeriksa leluhur anggota tersebut.

GetCustomAttributes(MemberInfo, Type)

Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu.

GetCustomAttributes(MemberInfo, Type, Boolean)

Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu, dan secara opsional memeriksa leluhur anggota tersebut.

GetCustomAttributes<T>(MemberInfo)

Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu.

GetCustomAttributes<T>(MemberInfo, Boolean)

Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu, dan secara opsional memeriksa leluhur anggota tersebut.

IsDefined(MemberInfo, Type)

Menunjukkan apakah atribut kustom dari jenis tertentu diterapkan ke anggota tertentu.

IsDefined(MemberInfo, Type, Boolean)

Menunjukkan apakah atribut kustom dari jenis tertentu diterapkan ke anggota tertentu, dan, secara opsional, diterapkan ke leluhurnya.

GetMetadataToken(MemberInfo)

Mendapatkan token metadata untuk anggota yang diberikan, jika tersedia.

HasMetadataToken(MemberInfo)

Mengembalikan nilai yang menunjukkan apakah token metadata tersedia untuk anggota yang ditentukan.

Berlaku untuk