FieldBuilder Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje a představuje pole. Tato třída se nemůže dědit.
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
- Dědičnost
- Atributy
- Implementuje
Příklady
Následující příklad znázorňuje použití FieldBuilder třídy.
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
Poznámky
Získání instance FieldBuilder voláním DefineField, DefineInitializedDatanebo DefineUninitializedData.
Note
Metoda SetValue se v současné době nepodporuje. Jako alternativní řešení načtěte FieldInfo ho tak, že se zamyslíte nad dokončeným typem a voláním SetValue , které nastaví hodnotu pole.
Konstruktory
| Name | Description |
|---|---|
| FieldBuilder() |
Inicializuje novou instanci FieldBuilder třídy. |
Vlastnosti
| Name | Description |
|---|---|
| Attributes |
Označuje atributy tohoto pole. Tato vlastnost je pouze pro čtení. |
| CustomAttributes |
Získá kolekci, která obsahuje vlastní atributy tohoto člena. (Zděděno od MemberInfo) |
| DeclaringType |
Označuje odkaz na Type objekt pro typ, který deklaruje toto pole. Tato vlastnost je pouze pro čtení. |
| FieldHandle |
Označuje interní popisovač metadat pro toto pole. Tato vlastnost je pouze pro čtení. |
| FieldType |
Označuje Type objekt, který představuje typ tohoto pole. Tato vlastnost je pouze pro čtení. |
| IsAssembly |
Získá hodnotu určující, zda potenciální viditelnost tohoto pole je popsána Assembly; to znamená, že pole je viditelné maximálně pro jiné typy ve stejném sestavení a není viditelné pro odvozené typy mimo sestavení. (Zděděno od FieldInfo) |
| IsCollectible |
Získá hodnotu, která označuje, zda tento MemberInfo objekt odkazuje na jedno nebo více sestavení uložených v collectible AssemblyLoadContext. (Zděděno od MemberInfo) |
| IsFamily |
Získá hodnotu určující, zda viditelnost tohoto pole je popsána Family; to znamená, že pole je viditelné pouze v rámci své třídy a odvozené třídy. (Zděděno od FieldInfo) |
| IsFamilyAndAssembly |
Získá hodnotu určující, zda viditelnost tohoto pole je popsána FamANDAssem; to znamená, že pole lze získat přístup z odvozených tříd, ale pouze pokud jsou ve stejném sestavení. (Zděděno od FieldInfo) |
| IsFamilyOrAssembly |
Získá hodnotu určující, zda potenciální viditelnost tohoto pole je popsána FamORAssem; to znamená, že pole lze získat přístup pomocí odvozených tříd bez ohledu na to, kde jsou, a podle tříd ve stejném sestavení. (Zděděno od FieldInfo) |
| IsInitOnly |
Získá hodnotu určující, zda pole lze nastavit pouze v těle konstruktoru. (Zděděno od FieldInfo) |
| IsLiteral |
Získá hodnotu určující, zda je hodnota zapsána v době kompilace a nelze ji změnit. (Zděděno od FieldInfo) |
| IsNotSerialized |
Zastaralé.
Získá hodnotu určující, zda toto pole má |
| IsPinvokeImpl |
Získá hodnotu určující, zda odpovídající |
| IsPrivate |
Získá hodnotu určující, zda je pole soukromé. (Zděděno od FieldInfo) |
| IsPublic |
Získá hodnotu určující, zda je pole veřejné. (Zděděno od FieldInfo) |
| IsSecurityCritical |
Získá hodnotu, která určuje, zda je aktuální pole kritické pro zabezpečení nebo bezpečné zabezpečení na aktuální úrovni důvěryhodnosti. (Zděděno od FieldInfo) |
| IsSecuritySafeCritical |
Získá hodnotu, která určuje, jestli je aktuální pole kritické pro zabezpečení na aktuální úrovni důvěryhodnosti. (Zděděno od FieldInfo) |
| IsSecurityTransparent |
Získá hodnotu, která určuje, zda je aktuální pole transparentní na aktuální úrovni důvěryhodnosti. (Zděděno od FieldInfo) |
| IsSpecialName |
Získá hodnotu určující, zda je odpovídající |
| IsStatic |
Získá hodnotu označující, zda je pole statické. (Zděděno od FieldInfo) |
| MemberType |
MemberTypes Získá hodnotu označující, že tento člen je pole. (Zděděno od FieldInfo) |
| MetadataToken |
Získá token, který identifikuje aktuální dynamický modul v metadatech. |
| MetadataToken |
Získá hodnotu, která identifikuje prvek metadat. (Zděděno od MemberInfo) |
| Module |
Získá modul, ve kterém je definován typ obsahující toto pole. |
| Module |
Získá modul, ve kterém typ, který deklaruje člen reprezentovaný proudem MemberInfo je definován. (Zděděno od MemberInfo) |
| Name |
Označuje název tohoto pole. Tato vlastnost je pouze pro čtení. |
| ReflectedType |
Označuje odkaz na Type objekt, ze kterého byl tento objekt získán. Tato vlastnost je pouze pro čtení. |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od FieldInfo) |
| GetCustomAttributes(Boolean) |
Vrátí všechny vlastní atributy definované pro toto pole. |
| GetCustomAttributes(Type, Boolean) |
Vrátí všechny vlastní atributy definované pro toto pole identifikované daným typem. |
| GetCustomAttributesData() |
Vrátí seznam CustomAttributeData objektů představujících data o atributech, které byly použity na cílového člena. (Zděděno od MemberInfo) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od FieldInfo) |
| GetModifiedFieldType() |
Získá upravený typ tohoto pole objektu. (Zděděno od FieldInfo) |
| GetOptionalCustomModifiers() |
Získá pole typů, které identifikují volitelné vlastní modifikátory pole. (Zděděno od FieldInfo) |
| GetRawConstantValue() |
Vrátí hodnotu literálu přidruženou k poli kompilátorem. (Zděděno od FieldInfo) |
| GetRequiredCustomModifiers() |
Získá pole typů, které identifikují požadované vlastní modifikátory vlastnosti. (Zděděno od FieldInfo) |
| GetToken() |
Vrátí token představující toto pole. |
| GetType() |
Zjistí atributy pole třídy a poskytuje přístup k metadatům polí. (Zděděno od FieldInfo) |
| GetValue(Object) |
Načte hodnotu pole podporovaného daným objektem. |
| GetValueDirect(TypedReference) |
Vrátí hodnotu pole podporovaného daným objektem. (Zděděno od FieldInfo) |
| HasSameMetadataDefinitionAs(MemberInfo) |
Definuje a představuje pole. Tato třída se nemůže dědit. (Zděděno od MemberInfo) |
| IsDefined(Type, Boolean) |
Určuje, zda je atribut se zadaným typem definován v poli. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| SetConstant(Object) |
Nastaví výchozí hodnotu tohoto pole. |
| SetConstantCore(Object) |
Při přepsání v odvozené třídě nastaví výchozí hodnotu tohoto pole. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Nastaví vlastní atribut pomocí zadaného objektu blob vlastního atributu. |
| SetCustomAttribute(CustomAttributeBuilder) |
Nastaví vlastní atribut pomocí tvůrce vlastních atributů. |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
Při přepsání v odvozené třídě nastaví vlastní atribut pro toto sestavení. |
| SetMarshal(UnmanagedMarshal) |
Zastaralé.
Popisuje nativní zařazování pole. |
| SetOffset(Int32) |
Určuje rozložení pole. |
| SetOffsetCore(Int32) |
Při přepsání v odvozené třídě určuje rozložení pole. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Nastaví hodnotu pole podporovaného daným objektem. |
| SetValue(Object, Object) |
Nastaví hodnotu pole podporovaného daným objektem. (Zděděno od FieldInfo) |
| SetValueDirect(TypedReference, Object) |
Nastaví hodnotu pole podporovaného daným objektem. (Zděděno od FieldInfo) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| _FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. |
| _FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. |
| _FieldBuilder.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). |
| _FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. |
| _FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od FieldInfo) |
| _FieldInfo.GetType() |
Type Získá objekt představující FieldInfo typ. (Zděděno od FieldInfo) |
| _FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. (Zděděno od FieldInfo) |
| _FieldInfo.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od FieldInfo) |
| _FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od FieldInfo) |
| _MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od MemberInfo) |
| _MemberInfo.GetType() |
Type Získá objekt představující MemberInfo třídu. (Zděděno od MemberInfo) |
| _MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. (Zděděno od MemberInfo) |
| _MemberInfo.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od MemberInfo) |
| _MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od MemberInfo) |
| ICustomAttributeProvider.GetCustomAttributes(Boolean) |
Vrátí pole všech vlastních atributů definovaných pro tohoto člena, s výjimkou pojmenovaných atributů, nebo prázdné pole, pokud neexistují žádné vlastní atributy. (Zděděno od MemberInfo) |
| ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
Vrátí pole vlastních atributů definovaných pro tento člen, identifikovaný podle typu nebo prázdné pole, pokud neexistují žádné vlastní atributy tohoto typu. (Zděděno od MemberInfo) |
| ICustomAttributeProvider.IsDefined(Type, Boolean) |
Určuje, zda je u tohoto člena |
Metody rozšíření
| Name | Description |
|---|---|
| GetCustomAttribute(MemberInfo, Type, Boolean) |
Načte vlastní atribut zadaného typu, který se použije u zadaného členu, a volitelně zkontroluje předky daného člena. |
| GetCustomAttribute(MemberInfo, Type) |
Načte vlastní atribut zadaného typu, který se použije na zadaný člen. |
| GetCustomAttribute<T>(MemberInfo, Boolean) |
Načte vlastní atribut zadaného typu, který se použije u zadaného členu, a volitelně zkontroluje předky daného člena. |
| GetCustomAttribute<T>(MemberInfo) |
Načte vlastní atribut zadaného typu, který se použije na zadaný člen. |
| GetCustomAttributes(MemberInfo, Boolean) |
Načte kolekci vlastních atributů, které se použijí na zadaného člena, a volitelně zkontroluje předky daného člena. |
| GetCustomAttributes(MemberInfo, Type, Boolean) |
Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen, a volitelně zkontroluje nadřazené objekty daného člena. |
| GetCustomAttributes(MemberInfo, Type) |
Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen. |
| GetCustomAttributes(MemberInfo) |
Načte kolekci vlastních atributů, které se použijí na zadaný člen. |
| GetCustomAttributes<T>(MemberInfo, Boolean) |
Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen, a volitelně zkontroluje nadřazené objekty daného člena. |
| GetCustomAttributes<T>(MemberInfo) |
Načte kolekci vlastních atributů zadaného typu, které se použijí na zadaný člen. |
| GetMetadataToken(MemberInfo) |
Získá token metadat pro daného člena, pokud je k dispozici. |
| HasMetadataToken(MemberInfo) |
Vrátí hodnotu, která určuje, zda je token metadat k dispozici pro zadaného člena. |
| IsDefined(MemberInfo, Type, Boolean) |
Určuje, zda se vlastní atributy zadaného typu použijí na zadaný člen a volitelně se použijí na jeho nadřazené objekty. |
| IsDefined(MemberInfo, Type) |
Určuje, zda jsou u zadaného člena použity vlastní atributy zadaného typu. |