FieldBuilder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет и предоставляет поле. Этот класс не наследуется.
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
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере показано использование FieldBuilder
класса .
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
Комментарии
Получите экземпляр , FieldBuilder
вызвав DefineField, DefineInitializedDataили DefineUninitializedData.
Примечание
Метод SetValue в настоящее время не поддерживается. В качестве обходного решения извлеките FieldInfo , отражая готовый тип, и вызовите SetValue , чтобы задать значение поля.
Конструкторы
FieldBuilder() |
Инициализирует новый экземпляр класса FieldBuilder. |
Свойства
Attributes |
Указывает атрибуты данного поля. Это свойство доступно только для чтения. |
CustomAttributes |
Получает коллекцию, содержащую пользовательские атрибуты этого члена. (Унаследовано от MemberInfo) |
DeclaringType |
Указывает ссылку на объект Type типа, которым объявлено данное поле. Это свойство доступно только для чтения. |
FieldHandle |
Указывает внутренний дескриптор метаданных для данного поля. Это свойство доступно только для чтения. |
FieldHandle |
Возвращает дескриптор |
FieldType |
Указывает объект Type, предоставляющий тип данного поля. Это свойство доступно только для чтения. |
IsAssembly |
Возвращает значение, которое указывает, описана ли доступность данного поля в поле Assembly; другими словами, будет ли это поле полностью доступно для других полей той же сборки и недоступно для производных типов, не включенных в сборку. (Унаследовано от FieldInfo) |
IsCollectible |
Получает значение, указывающее, является ли объект MemberInfo частью сборки, содержащейся в забираемом контексте AssemblyLoadContext. (Унаследовано от MemberInfo) |
IsFamily |
Возвращает значение, которое указывает, описана ли доступность этого поля в поле Family; другими словами, будет ли это поле доступно только в своем классе и производных классах. (Унаследовано от FieldInfo) |
IsFamilyAndAssembly |
Возвращает значение, которое указывает, описана ли доступность этого поля в поле FamANDAssem; другими словами, будет ли это поле доступно только в производных классах, которые включены в ту же сборку. (Унаследовано от FieldInfo) |
IsFamilyOrAssembly |
Возвращает значение, которое указывает, описана ли потенциальная доступность этого поля в поле FamORAssem; другими словами, будет ли это поле доступно в производных классах независимо от их местонахождения, а также в классах, которые включены в ту же сборку. (Унаследовано от FieldInfo) |
IsInitOnly |
Возвращает значение, которое определяет, устанавливается ли поле только в тексте сообщения конструктора. (Унаследовано от FieldInfo) |
IsLiteral |
Возвращает значение, показывающее, что значение записывается во время компиляции и не может быть изменено. (Унаследовано от FieldInfo) |
IsNotSerialized |
Устаревшие..
Возвращает значение, указывающее, установлен ли для этого поля атрибут |
IsPinvokeImpl |
Возвращает значение, указывающее, установлен ли в FieldAttributes соответствующий атрибут |
IsPrivate |
Возвращает значение, указывающее, является ли поле закрытым. (Унаследовано от FieldInfo) |
IsPublic |
Возвращает значение, указывающее, является ли поле открытым. (Унаследовано от FieldInfo) |
IsSecurityCritical |
Получает значение, которое указывает, является ли текущее поле критически важным для безопасности или защищенным критически важным для безопасности на данном уровне доверия. (Унаследовано от FieldInfo) |
IsSecuritySafeCritical |
Получает значение, которое указывает, является ли текущее поле защищенным критически важным для безопасности на данном уровне доверия. (Унаследовано от FieldInfo) |
IsSecurityTransparent |
Получает значение, которое указывает, является ли текущее поле прозрачным на данном уровне доверия. (Унаследовано от FieldInfo) |
IsSpecialName |
Возвращает значение, указывающее, установлен ли в перечислителе FieldAttributes соответствующий атрибут |
IsStatic |
Возвращает значение, указывающее, является ли поле статическим. (Унаследовано от FieldInfo) |
MemberType |
Возвращает значение MemberTypes, указывающее, что этот элемент является полем. (Унаследовано от FieldInfo) |
MetadataToken |
Получает токен, который определяет текущий динамический модуль в метаданных. |
MetadataToken |
Получает значение, определяющее элемент метаданных. (Унаследовано от MemberInfo) |
Module |
Возвращает модуль, в котором определяется тип, содержащий это поле. |
Module |
Получает модуль, в котором определяется тип, объявляющий член, представленный текущим объектом MemberInfo. (Унаследовано от MemberInfo) |
Name |
Указывает имя данного поля. Это свойство доступно только для чтения. |
ReflectedType |
Дает ссылку на объект Type, откуда был получен данный объект. Это свойство доступно только для чтения. |
ReflectedType |
Получает объект класса, который использовался для извлечения данного экземпляра объекта |
Методы
Equals(Object) |
Возвращает значение, показывающее, равен ли экземпляр указанному объекту. (Унаследовано от FieldInfo) |
GetCustomAttributes(Boolean) |
Возвращает все пользовательские атрибуты, определенные для данного поля. |
GetCustomAttributes(Boolean) |
При переопределении в производном классе возвращает массив всех настраиваемых атрибутов, примененных к данному члену. (Унаследовано от MemberInfo) |
GetCustomAttributes(Type, Boolean) |
Возвращает все пользовательские атрибуты, определенные для данного поля, идентифицируемого указанным типом. |
GetCustomAttributes(Type, Boolean) |
При переопределении в производном классе возвращает массив настраиваемых атрибутов, применяемых к этому элементу и определяемых параметром Type. (Унаследовано от MemberInfo) |
GetCustomAttributesData() |
Возвращает список объектов CustomAttributeData, представляющих данные об атрибутах, примененных к целевому элементу. (Унаследовано от MemberInfo) |
GetHashCode() |
Возвращает хэш-код данного экземпляра. (Унаследовано от FieldInfo) |
GetModifiedFieldType() |
Возвращает измененный тип этого объекта поля. (Унаследовано от FieldInfo) |
GetOptionalCustomModifiers() |
Возвращает массив типов, определяющих необязательные настраиваемые модификаторы для поля. (Унаследовано от FieldInfo) |
GetRawConstantValue() |
Метод возвращает литеральное значение, связанное с этим свойством компилятором. (Унаследовано от FieldInfo) |
GetRequiredCustomModifiers() |
Возвращает массив типов, определяющих обязательные настраиваемые модификаторы для свойства. (Унаследовано от FieldInfo) |
GetToken() |
Возвращает токен, представляющий данное поле. |
GetType() |
Обнаруживает атрибуты поля класса и обеспечивает доступ к его метаданным. (Унаследовано от FieldInfo) |
GetValue(Object) |
Извлекает значение поля для указанного объекта. |
GetValueDirect(TypedReference) |
Возвращает значение поля, поддерживаемого заданным объектом. (Унаследовано от FieldInfo) |
HasSameMetadataDefinitionAs(MemberInfo) |
Определяет и предоставляет поле. Этот класс не наследуется. (Унаследовано от MemberInfo) |
IsDefined(Type, Boolean) |
Показывает, определен ли для поля атрибут указанного типа. |
IsDefined(Type, Boolean) |
При переопределении в производном классе указывает, применяются ли для этого члена один или несколько атрибутов заданного типа или его производных типов. (Унаследовано от MemberInfo) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
SetConstant(Object) |
Устанавливает значение, присваиваемое полю по умолчанию. |
SetConstantCore(Object) |
При переопределении в производном классе задает значение по умолчанию для этого поля. |
SetCustomAttribute(ConstructorInfo, Byte[]) |
Задает настраиваемый атрибут с помощью большого двоичного объекта пользовательских атрибутов. |
SetCustomAttribute(CustomAttributeBuilder) |
Задает настраиваемый атрибут с помощью построителя настраиваемых атрибутов. |
SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
При переопределении в производном классе задает настраиваемый атрибут для этой сборки. |
SetMarshal(UnmanagedMarshal) |
Устаревшие..
Описывает присущий данному объекту маршалинг поля. |
SetOffset(Int32) |
Устанавливает расположение поля. |
SetOffsetCore(Int32) |
При переопределении в производном классе задает макет поля. |
SetValue(Object, Object) |
Задает значение поля, которое поддерживается указанным объектом. (Унаследовано от FieldInfo) |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Задает значение поля, которое поддерживается указанным объектом. |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Если переопределен производным классом, устанавливает значение поля, поддерживаемое данным объектом. (Унаследовано от FieldInfo) |
SetValueDirect(TypedReference, Object) |
Задает значение поля, которое поддерживается указанным объектом. (Унаследовано от FieldInfo) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
_FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. |
_FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса. |
_FieldBuilder.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). |
_FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. |
_FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от FieldInfo) |
_FieldInfo.GetType() |
Возвращает объект Type, представляющий тип FieldInfo. (Унаследовано от FieldInfo) |
_FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса. (Унаследовано от FieldInfo) |
_FieldInfo.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от FieldInfo) |
_FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от FieldInfo) |
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от MemberInfo) |
_MemberInfo.GetType() |
Возвращает объект Type, представляющий класс MemberInfo. (Унаследовано от MemberInfo) |
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса. (Унаследовано от MemberInfo) |
_MemberInfo.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от MemberInfo) |
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от MemberInfo) |
ICustomAttributeProvider.GetCustomAttributes(Boolean) |
Возвращает массив всех настраиваемых атрибутов, определенных для этого элемента, за исключением именованных атрибутов, или пустой массив, если атрибуты отсутствуют. (Унаследовано от MemberInfo) |
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
Возвращает массив настраиваемых атрибутов, определенных для этого элемента с учетом типа, или пустой массив, если отсутствуют настраиваемые атрибуты определенного типа. (Унаследовано от MemberInfo) |
ICustomAttributeProvider.IsDefined(Type, Boolean) |
Указывает, сколько экземпляров |
Методы расширения
GetCustomAttribute(MemberInfo, Type) |
Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу. |
GetCustomAttribute(MemberInfo, Type, Boolean) |
Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttribute<T>(MemberInfo) |
Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу. |
GetCustomAttribute<T>(MemberInfo, Boolean) |
Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttributes(MemberInfo) |
Извлекает коллекцию настраиваемых атрибутов, примененных к указанному члену. |
GetCustomAttributes(MemberInfo, Boolean) |
Извлекает коллекцию пользовательских атрибутов, которые применяются к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttributes(MemberInfo, Type) |
Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу. |
GetCustomAttributes(MemberInfo, Type, Boolean) |
Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttributes<T>(MemberInfo) |
Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу. |
GetCustomAttributes<T>(MemberInfo, Boolean) |
Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
IsDefined(MemberInfo, Type) |
Указывает, применены ли какие-либо пользовательские атрибуты заданного типа к указанному члену. |
IsDefined(MemberInfo, Type, Boolean) |
Указывает применены ли настраиваемые атрибуты указанного типа к указанному элементу и, при необходимости, применены ли они к его предкам. |
GetMetadataToken(MemberInfo) |
Возвращает маркер метаданных для заданного элемента, если он доступен. |
HasMetadataToken(MemberInfo) |
Возвращает значение, указывающее, доступен ли маркер метаданных для указанного элемента. |