FieldBuilder Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Define e representa um corpo. Esta classe não pode ser herdada.
public ref class FieldBuilder sealed : System::Reflection::FieldInfo, System::Runtime::InteropServices::_FieldBuilder
public ref class FieldBuilder sealed : 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
public sealed class FieldBuilder : System.Reflection.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
type FieldBuilder = class
inherit FieldInfo
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
Implements _FieldBuilder
Public NotInheritable Class FieldBuilder
Inherits FieldInfo
- Herança
- Atributos
- Implementações
Exemplos
O exemplo seguinte ilustra a utilização da FieldBuilder classe.
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
Observações
Obtém uma instância de FieldBuilder chamando DefineField, DefineInitializedData, ou DefineUninitializedData.
Note
O SetValue método atualmente não é suportado. Como solução alternativa, recupera o FieldInfo refletindo sobre o tipo e a chamada SetValue finalizados para definir o valor do campo.
Propriedades
| Name | Description |
|---|---|
| Attributes |
Indica as características deste campo. Esta propriedade é somente leitura. |
| CustomAttributes |
Obtém uma coleção que contém os atributos personalizados deste membro. (Herdado de MemberInfo) |
| DeclaringType |
Indica uma referência ao Type objeto para o tipo que declara este campo. Esta propriedade é somente leitura. |
| FieldHandle |
Indica o controlo interno de metadados para este campo. Esta propriedade é somente leitura. |
| FieldType |
Indica o Type objeto que representa o tipo deste campo. Esta propriedade é somente leitura. |
| IsAssembly |
Obtém um valor que indica se a visibilidade potencial deste campo é descrita por Assembly; ou seja, o campo é visível no máximo para outros tipos na mesma montagem, e não é visível para tipos derivados fora da montagem. (Herdado de FieldInfo) |
| IsFamily |
Obtém um valor que indica se a visibilidade deste campo é descrita por Family; ou seja, o campo é visível apenas dentro da sua classe e das classes derivadas. (Herdado de FieldInfo) |
| IsFamilyAndAssembly |
Obtém um valor que indica se a visibilidade deste campo é descrita por FamANDAssem; ou seja, o campo pode ser acedido a partir de classes derivadas, mas apenas se estiverem na mesma assembleia. (Herdado de FieldInfo) |
| IsFamilyOrAssembly |
Obtém um valor que indica se a visibilidade potencial deste campo é descrita por FamORAssem; isto é, o campo pode ser acedido por classes derivadas onde quer que estejam, e por classes na mesma assembleia. (Herdado de FieldInfo) |
| IsInitOnly |
Obtém um valor que indica se o corpo só pode ser definido no corpo do construtor. (Herdado de FieldInfo) |
| IsLiteral |
Recebe um valor que indica se o valor está escrito em tempo de compilação e não pode ser alterado. (Herdado de FieldInfo) |
| IsNotSerialized |
Obtém um valor que indica se este campo tem o |
| IsPinvokeImpl |
Obtém um valor que indica se o atributo correspondente |
| IsPrivate |
Recebe um valor que indica se o campo é privado. (Herdado de FieldInfo) |
| IsPublic |
Recebe um valor que indica se o campo é público. (Herdado de FieldInfo) |
| IsSecurityCritical |
Obtém um valor que indica se o campo atual é crítico para segurança ou para segurança ao nível de confiança atual. (Herdado de FieldInfo) |
| IsSecuritySafeCritical |
Obtém um valor que indica se o campo atual é crítico de segurança ao nível de confiança atual. (Herdado de FieldInfo) |
| IsSecurityTransparent |
Obtém um valor que indica se o campo atual é transparente ao nível de confiança atual. (Herdado de FieldInfo) |
| IsSpecialName |
Obtém um valor que indica se o atributo correspondente |
| IsStatic |
Obtém um valor que indica se o campo é estático. (Herdado de FieldInfo) |
| MemberType |
Obtém um MemberTypes valor que indica que este membro é um campo. (Herdado de FieldInfo) |
| MetadataToken |
Obtém um valor que identifica um elemento de metadados. (Herdado de MemberInfo) |
| Module |
Obtém o módulo em que o tipo que contém este campo está a ser definido. |
| Module |
Obtém o módulo em que o tipo que declara o elemento representado pela corrente MemberInfo está definido. (Herdado de MemberInfo) |
| Name |
Indica o nome deste campo. Esta propriedade é somente leitura. |
| ReflectedType |
Indica a referência ao Type objeto de onde este objeto foi obtido. Esta propriedade é somente leitura. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de FieldInfo) |
| GetCustomAttributes(Boolean) |
Devolve todos os atributos personalizados definidos para este campo. |
| GetCustomAttributes(Type, Boolean) |
Devolve todos os atributos personalizados definidos para este campo identificados pelo tipo dado. |
| GetCustomAttributesData() |
Devolve uma lista de CustomAttributeData objetos que representam dados sobre os atributos que foram aplicados ao membro alvo. (Herdado de MemberInfo) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de FieldInfo) |
| GetOptionalCustomModifiers() |
Recebe um conjunto de tipos que identificam os modificadores personalizados opcionais do campo. (Herdado de FieldInfo) |
| GetRawConstantValue() |
Devolve um valor literal associado ao campo por um compilador. (Herdado de FieldInfo) |
| GetRequiredCustomModifiers() |
Obtém um array de tipos que identificam os modificadores personalizados necessários da propriedade. (Herdado de FieldInfo) |
| GetToken() |
Devolve o token que representa este campo. |
| GetType() |
Descobre os atributos de um campo de classe e fornece acesso a metadados do campo. (Herdado de FieldInfo) |
| GetValue(Object) |
Recupera o valor do campo suportado pelo objeto dado. |
| GetValueDirect(TypedReference) |
Devolve o valor de um campo suportado por um dado objeto. (Herdado de FieldInfo) |
| HasSameMetadataDefinitionAs(MemberInfo) |
Define e representa um corpo. Esta classe não pode ser herdada. (Herdado de MemberInfo) |
| IsDefined(Type, Boolean) |
Indica se um atributo com o tipo especificado está definido num campo. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| SetConstant(Object) |
Define o valor padrão deste campo. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Define um atributo personalizado usando um blob de atributo personalizado especificado. |
| SetCustomAttribute(CustomAttributeBuilder) |
Define um atributo personalizado usando um construtor de atributos personalizado. |
| SetMarshal(UnmanagedMarshal) |
Obsoleto.
Descreve a organização nativa do campo. |
| SetOffset(Int32) |
Especifica a disposição do campo. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Define o valor do campo suportado pelo objeto dado. |
| SetValue(Object, Object) |
Define o valor do campo suportado pelo objeto dado. (Herdado de FieldInfo) |
| SetValueDirect(TypedReference, Object) |
Define o valor do campo suportado pelo objeto dado. (Herdado de FieldInfo) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| _FieldBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. |
| _FieldBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface. |
| _FieldBuilder.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). |
| _FieldBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. |
| _FieldInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de FieldInfo) |
| _FieldInfo.GetType() |
Obtém um Type objeto que represente o FieldInfo tipo. (Herdado de FieldInfo) |
| _FieldInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface. (Herdado de FieldInfo) |
| _FieldInfo.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de FieldInfo) |
| _FieldInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de FieldInfo) |
| _MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de MemberInfo) |
| _MemberInfo.GetType() |
Obtém um Type objeto que representa a MemberInfo classe. (Herdado de MemberInfo) |
| _MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo de um objeto, que podem ser usadas para obter as informações de tipo para uma interface. (Herdado de MemberInfo) |
| _MemberInfo.GetTypeInfoCount(UInt32) |
Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de MemberInfo) |
| _MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Proporciona acesso a propriedades e métodos expostos por um objeto. (Herdado de MemberInfo) |
Métodos da Extensão
| Name | Description |
|---|---|
| GetCustomAttribute(MemberInfo, Type, Boolean) |
Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro. |
| GetCustomAttribute(MemberInfo, Type) |
Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado. |
| GetCustomAttribute<T>(MemberInfo, Boolean) |
Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro. |
| GetCustomAttribute<T>(MemberInfo) |
Recupera um atributo personalizado de um tipo especificado que é aplicado a um membro especificado. |
| GetCustomAttributes(MemberInfo, Boolean) |
Recupera uma coleção de atributos personalizados que são aplicados a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro. |
| GetCustomAttributes(MemberInfo, Type, Boolean) |
Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro. |
| GetCustomAttributes(MemberInfo, Type) |
Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado. |
| GetCustomAttributes(MemberInfo) |
Recupera uma coleção de atributos personalizados que são aplicados a um membro especificado. |
| GetCustomAttributes<T>(MemberInfo, Boolean) |
Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado e, opcionalmente, inspeciona os antepassados desse membro. |
| GetCustomAttributes<T>(MemberInfo) |
Recupera uma coleção de atributos personalizados de um tipo especificado que são aplicados a um membro especificado. |
| IsDefined(MemberInfo, Type, Boolean) |
Indica se atributos personalizados de um tipo especificado são aplicados a um membro especificado e, opcionalmente, aplicados aos seus antecessores. |
| IsDefined(MemberInfo, Type) |
Indica se atributos personalizados de um tipo especificado são aplicados a um membro especificado. |