FieldBuilder 클래스

정의

필드를 정의하고 나타냅니다. 이 클래스는 상속할 수 없습니다.

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
상속
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

설명

또는 를 호출FieldBuilderDefineFieldDefineInitializedData하여 인스턴스 DefineUninitializedData 를 가져옵니다.

메모

SetValue 메서드는 현재 지원되지 않습니다. 해결 방법으로 완성된 FieldInfo 형식을 반영하여 검색하고 필드 값을 설정하기 위한 호출 SetValue 을 실행합니다.

생성자

Name Description
FieldBuilder()

FieldBuilder 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
Attributes

이 필드의 특성을 나타냅니다. 이 속성은 읽기 전용입니다.

CustomAttributes

이 멤버의 사용자 지정 특성을 포함하는 컬렉션을 가져옵니다.

(다음에서 상속됨 MemberInfo)
DeclaringType

이 필드를 선언하는 Type 형식의 개체에 대한 참조를 나타냅니다. 이 속성은 읽기 전용입니다.

FieldHandle

이 필드에 대한 내부 메타데이터 핸들을 나타냅니다. 이 속성은 읽기 전용입니다.

FieldType

이 필드의 Type 형식을 나타내는 개체를 나타냅니다. 이 속성은 읽기 전용입니다.

IsAssembly

이 필드 Assembly의 잠재적 표시 여부를 나타내는 값을 가져옵니다. 즉, 필드가 동일한 어셈블리의 다른 형식에 가장 많이 표시되며 어셈블리 외부의 파생 형식에는 표시되지 않습니다.

(다음에서 상속됨 FieldInfo)
IsCollectible

MemberInfo 개체가 수집 가능한 AssemblyLoadContext어셈블리에 저장된 하나 이상의 어셈블리를 참조하는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 MemberInfo)
IsFamily

이 필드 Family의 표시 여부를 나타내는 값을 가져옵니다. 즉, 필드가 해당 클래스 및 파생 클래스 내에서만 표시됩니다.

(다음에서 상속됨 FieldInfo)
IsFamilyAndAssembly

이 필드 FamANDAssem의 표시 여부를 나타내는 값을 가져옵니다. 즉, 필드가 파생 클래스에서 액세스할 수 있지만 동일한 어셈블리에 있는 경우에만 액세스할 수 있습니다.

(다음에서 상속됨 FieldInfo)
IsFamilyOrAssembly

이 필드 FamORAssem의 잠재적 표시 여부를 나타내는 값을 가져옵니다. 즉, 필드가 어디에 있든 파생 클래스 및 동일한 어셈블리의 클래스에 의해 필드에 액세스할 수 있습니다.

(다음에서 상속됨 FieldInfo)
IsInitOnly

필드를 생성자 본문에만 설정할 수 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsLiteral

값이 컴파일 시간에 작성되고 변경할 수 없는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsNotSerialized
사용되지 않음.

이 필드에 NotSerialized 특성이 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsPinvokeImpl

해당 PinvokeImpl 특성이 설정되어 FieldAttributes있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsPrivate

필드가 private인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsPublic

필드가 public인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsSecurityCritical

현재 필드가 현재 신뢰 수준에서 보안에 중요하거나 보안이 안전한지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsSecuritySafeCritical

현재 필드가 현재 신뢰 수준에서 보안에 중요한지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsSecurityTransparent

현재 필드가 현재 신뢰 수준에서 투명한지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsSpecialName

해당 SpecialName 특성이 열거자에 설정되어 FieldAttributes 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
IsStatic

필드가 정적인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
MemberType

이 멤버가 MemberTypes 필드임을 나타내는 값을 가져옵니다.

(다음에서 상속됨 FieldInfo)
MetadataToken

메타데이터에서 현재 동적 모듈을 식별하는 토큰을 가져옵니다.

MetadataToken

메타데이터 요소를 식별하는 값을 가져옵니다.

(다음에서 상속됨 MemberInfo)
Module

이 필드가 포함된 형식이 정의되는 모듈을 가져옵니다.

Module

현재 MemberInfo 가 나타내는 멤버를 선언하는 형식이 정의된 모듈을 가져옵니다.

(다음에서 상속됨 MemberInfo)
Name

이 필드의 이름을 나타냅니다. 이 속성은 읽기 전용입니다.

ReflectedType

이 개체를 가져온 개체에 Type 대한 참조를 나타냅니다. 이 속성은 읽기 전용입니다.

메서드

Name Description
Equals(Object)

이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 FieldInfo)
GetCustomAttributes(Boolean)

이 필드에 대해 정의된 모든 사용자 지정 특성을 반환합니다.

GetCustomAttributes(Type, Boolean)

지정된 형식으로 식별되는 이 필드에 대해 정의된 모든 사용자 지정 특성을 반환합니다.

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)

지정된 형식을 가진 특성이 필드에 정의되어 있는지 여부를 나타냅니다.

MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
SetConstant(Object)

이 필드의 기본값을 설정합니다.

SetConstantCore(Object)

파생 클래스에서 재정의되는 경우 이 필드의 기본값을 설정합니다.

SetCustomAttribute(ConstructorInfo, Byte[])

지정된 사용자 지정 특성 Blob을 사용하여 사용자 지정 특성을 설정합니다.

SetCustomAttribute(CustomAttributeBuilder)

사용자 지정 특성 작성기를 사용하여 사용자 지정 특성을 설정합니다.

SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

파생 클래스에서 재정의되는 경우 이 어셈블리에서 사용자 지정 특성을 설정합니다.

SetMarshal(UnmanagedMarshal)
사용되지 않음.

필드의 네이티브 마샬링을 설명합니다.

SetOffset(Int32)

필드 레이아웃을 지정합니다.

SetOffsetCore(Int32)

파생 클래스에서 재정의되는 경우 필드 레이아웃을 지정합니다.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

지정된 개체에서 지원하는 필드의 값을 설정합니다.

SetValue(Object, Object)

지정된 개체에서 지원하는 필드의 값을 설정합니다.

(다음에서 상속됨 FieldInfo)
SetValueDirect(TypedReference, Object)

지정된 개체에서 지원하는 필드의 값을 설정합니다.

(다음에서 상속됨 FieldInfo)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

Name Description
_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)

하나 이상의 인스턴스 attributeType 가 이 멤버에 정의되어 있는지 여부를 나타냅니다.

(다음에서 상속됨 MemberInfo)

확장명 메서드

Name Description
GetCustomAttribute(MemberInfo, Type, Boolean)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성을 검색하고 필요에 따라 해당 멤버의 상위 항목을 검사합니다.

GetCustomAttribute(MemberInfo, Type)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성을 검색합니다.

GetCustomAttribute<T>(MemberInfo, Boolean)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성을 검색하고 필요에 따라 해당 멤버의 상위 항목을 검사합니다.

GetCustomAttribute<T>(MemberInfo)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성을 검색합니다.

GetCustomAttributes(MemberInfo, Boolean)

지정된 멤버에 적용되는 사용자 지정 특성의 컬렉션을 검색하고 필요에 따라 해당 멤버의 상위 항목을 검사합니다.

GetCustomAttributes(MemberInfo, Type, Boolean)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성 컬렉션을 검색하고 필요에 따라 해당 멤버의 상위 항목을 검사합니다.

GetCustomAttributes(MemberInfo, Type)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성 컬렉션을 검색합니다.

GetCustomAttributes(MemberInfo)

지정된 멤버에 적용되는 사용자 지정 특성의 컬렉션을 검색합니다.

GetCustomAttributes<T>(MemberInfo, Boolean)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성 컬렉션을 검색하고 필요에 따라 해당 멤버의 상위 항목을 검사합니다.

GetCustomAttributes<T>(MemberInfo)

지정된 멤버에 적용되는 지정된 형식의 사용자 지정 특성 컬렉션을 검색합니다.

GetMetadataToken(MemberInfo)

사용 가능한 경우 지정된 멤버에 대한 메타데이터 토큰을 가져옵니다.

HasMetadataToken(MemberInfo)

지정된 멤버에 메타데이터 토큰을 사용할 수 있는지 여부를 나타내는 값을 반환합니다.

IsDefined(MemberInfo, Type, Boolean)

지정된 형식의 사용자 지정 특성이 지정된 멤버에 적용되는지 여부와 필요에 따라 상위 항목에 적용되는지 여부를 나타냅니다.

IsDefined(MemberInfo, Type)

지정된 형식의 사용자 지정 특성이 지정된 멤버에 적용되는지 여부를 나타냅니다.

적용 대상