C#의 Type.GetField() 메서드는 현재 Type(타입)에서 지정한 이름과 일치하는 특정 필드의 정보를 가져올 때 사용됩니다. 리플렉션(Reflection)을 활용하여 런타임에 필드 정보를 동적으로 조회할 수 있다는 점이 특징입니다.
구문(Syntax)
다음은 Type.GetField() 메서드의 구문입니다.
public System.Reflection.FieldInfo GetField (string name); public abstract System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);
매개변수 설명
name : 가져올 데이터 필드의 이름을 담고 있는 문자열입니다.
bindingAttr : 검색 방식을 지정하는 열거형 값들의 비트 조합(Bitwise OR)입니다. public, non-public, static 등 어떤 범위의 필드를 검색할지 결정할 수 있습니다.
예제 1 – 기본 사용법
이제 Type.GetField() 메서드를 사용하는 첫 번째 예제를 살펴보겠습니다.
using System;
using System.Reflection;
public class Demo {
public static void Main(){
Type type = typeof(Subject);
try {
FieldInfo fieldInfo = type.GetField("SubName");
Console.WriteLine("FieldInfo = {0}", fieldInfo);
}
catch (ArgumentNullException e){
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
public class Subject{
public string SubName = "Science";
}
출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
FieldInfo = System.String SubName
예제 2 – null 전달 시 예외 처리
이번에는 필드 이름으로 null을 전달했을 때의 동작을 확인하는 예제입니다.
using System;
using System.Reflection;
public class Demo {
public static void Main(){
Type type = typeof(Subject);
try {
FieldInfo fieldInfo = type.GetField(null);
Console.WriteLine("FieldInfo = {0}", fieldInfo);
}
catch (ArgumentNullException e){
Console.Write("{0}", e.GetType(), e.Message);
}
}
}
public class Subject{
public string SubName = "Science";
}
출력 결과
필드 이름 자리에 null을 전달하면 ArgumentNullException이 발생하며, 다음과 같은 출력이 나타납니다.
System.ArgumentNullException
정리
Type.GetField() 메서드는 문자열로 지정한 필드 이름에 해당하는 FieldInfo 객체를 반환합니다. 단, name 인자가 null이면 ArgumentNullException이 발생하므로, 실무 코드에서는 사전에 null 검사를 수행하거나 try-catch 문으로 예외 처리를 함께 구현하는 것이 안전합니다.