FieldBuilder 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
필드를 정의하고 나타냅니다. 이 클래스는 상속될 수 없습니다.
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
설명
, DefineInitializedData또는 DefineUninitializedData를 호출DefineField하여 의 FieldBuilder
instance 가져옵니다.
생성자
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 |
해당 |
IsPrivate |
private 필드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FieldInfo) |
IsPublic |
public 필드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FieldInfo) |
IsSecurityCritical |
현재 필드가 현재 신뢰 수준에서 보안에 중요한 필드이거나 보안 안전에 중요한 필드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FieldInfo) |
IsSecuritySafeCritical |
현재 필드가 현재 신뢰 수준에서 보안 안전에 중요한 필드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FieldInfo) |
IsSecurityTransparent |
현재 필드가 현재 신뢰 수준에서 투명 필드인지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FieldInfo) |
IsSpecialName |
해당 |
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[]) |
지정된 사용자 지정 특성 blob을 사용하여 사용자 지정 특성을 설정합니다. |
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) |
명시적 인터페이스 구현
확장 메서드
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) |
지정된 멤버에 대해 메타데이터 토큰을 사용할 수 있는지를 나타내는 값을 반환합니다. |
적용 대상
.NET