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