FieldBuilder Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan dan mewakili bidang. Kelas ini tidak dapat diwariskan.
public ref class FieldBuilder abstract : System::Reflection::FieldInfo
public ref class FieldBuilder sealed : System::Reflection::FieldInfo
public ref class FieldBuilder sealed : System::Reflection::FieldInfo, System::Runtime::InteropServices::_FieldBuilder
public abstract class FieldBuilder : System.Reflection.FieldInfo
public sealed 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 MustInherit Class FieldBuilder
Inherits FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
- Warisan
- 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.
Note
Metode SetValue saat ini tidak didukung. Sebagai solusinya, ambil FieldInfo dengan mencerminkan jenis yang sudah selesai dan panggil SetValue untuk mengatur nilai bidang.
Konstruktor
| Nama | Deskripsi |
|---|---|
| FieldBuilder() |
Menginisialisasi instans baru dari kelas FieldBuilder. |
Properti
| Nama | Deskripsi |
|---|---|
| Attributes |
Menunjukkan atribut bidang ini. Properti ini bersifat hanya dapat dibaca. |
| 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 dapat dibaca. |
| FieldHandle |
Menunjukkan handel metadata internal untuk bidang ini. Properti ini bersifat hanya dapat dibaca. |
| FieldType |
Type Menunjukkan objek yang mewakili tipe bidang ini. Properti ini bersifat hanya dapat dibaca. |
| IsAssembly |
Mendapatkan nilai yang menunjukkan apakah visibilitas potensial bidang ini dijelaskan oleh Assembly; yaitu, bidang terlihat paling banyak ke 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 mereferensikan satu atau beberapa rakitan yang disimpan 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 rakitan 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 rakitan 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 |
| IsPinvokeImpl |
Mendapatkan nilai yang menunjukkan apakah atribut yang |
| 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-kritis 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 |
| 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 MemberInfo saat ini ditentukan. (Diperoleh dari MemberInfo) |
| Name |
Menunjukkan nama bidang ini. Properti ini bersifat hanya dapat dibaca. |
| ReflectedType |
Menunjukkan referensi ke Type objek tempat objek ini diperoleh. Properti ini bersifat hanya dapat dibaca. |
Metode
| Nama | Deskripsi |
|---|---|
| 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(Type, Boolean) |
Mengembalikan semua atribut kustom yang ditentukan untuk bidang ini yang diidentifikasi oleh jenis yang diberikan. |
| GetCustomAttributesData() |
Mengembalikan daftar objek CustomAttributeData 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. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| SetConstant(Object) |
Mengatur nilai default bidang ini. |
| SetConstantCore(Object) |
Saat ditimpa dalam kelas turunan, mengatur nilai default bidang ini. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Mengatur atribut kustom menggunakan blob atribut kustom tertentu. |
| SetCustomAttribute(CustomAttributeBuilder) |
Mengatur atribut kustom menggunakan pembangun atribut kustom. |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
Saat ditimpa di kelas turunan, atur atribut kustom pada rakitan 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, BindingFlags, Binder, CultureInfo) |
Mengatur nilai bidang yang didukung oleh objek yang diberikan. |
| SetValue(Object, Object) |
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
| Nama | Deskripsi |
|---|---|
| _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 jenisnya 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 Type yang mewakili kelas MemberInfo. (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 instans |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetCustomAttribute(MemberInfo, Type, Boolean) |
Mengambil atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu, dan secara opsional memeriksa leluhur anggota tersebut. |
| GetCustomAttribute(MemberInfo, Type) |
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. |
| GetCustomAttribute<T>(MemberInfo) |
Mengambil atribut kustom dari jenis tertentu 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, Boolean) |
Mengambil kumpulan atribut kustom dari jenis tertentu 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) |
Mengambil kumpulan atribut kustom 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. |
| GetCustomAttributes<T>(MemberInfo) |
Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke anggota tertentu. |
| GetMetadataToken(MemberInfo) |
Mendapatkan token metadata untuk anggota tertentu, jika tersedia. |
| HasMetadataToken(MemberInfo) |
Mengembalikan nilai yang menunjukkan apakah token metadata tersedia untuk anggota yang ditentukan. |
| IsDefined(MemberInfo, Type, Boolean) |
Menunjukkan apakah atribut kustom dari jenis tertentu diterapkan ke anggota tertentu, dan, secara opsional, diterapkan ke leluhurnya. |
| IsDefined(MemberInfo, Type) |
Menunjukkan apakah atribut kustom dari jenis tertentu diterapkan ke anggota tertentu. |