SW 기능/C#
Reflection
tacoyaggi
2024. 2. 2. 09:48
Reflection
Reflection
은 프로그램의 형식과 멤버들에 대한 정보를 검사하고 조작할 수 있다.- 주로
Type
클래스를 사용하여 형식에 대한 정보를 얻는다.
예제
Type
클래스를 사용하여 해당 클래스의 형식(Type) 정보를 가져온다.
가져온 Type
기반으로 Property
와 Method
정보를 가져온다.
Type
기반으로 인스턴스를 생성 후, 프로퍼티 정보를 변경 하고 메서드를 호출 한다.
Taco
클래스의 GetName()
은 프로퍼티 Name
을 출력하게 되어 있다.
초기에는 빈값이 출력 될 것이나, Reflection
을 통해 동적으로 프로퍼티 Name
의 값을 수정 했고 그 후 메서드를 호출 했다.
호출된 값을 수정된 타코!
가 된다.
using System.Reflection;
Type type = typeof(Taco); // 타입 정보 가져오기
PropertyInfo propertyInfo = type.GetProperty("Name"); // Name 프로퍼티 가져오기
MethodInfo methodInfo = type.GetMethod("GetName"); // GetName() 메서드 가져오기
object instance = Activator.CreateInstance(type); // Type 기반의 인스턴스 생성
propertyInfo.SetValue(instance, "타코!"); // 프로퍼티 값 변경
methodInfo.Invoke(instance,null); // 메서드 호출
public class Taco
{
public string Name { get; set; }
public void GetName()
{
Console.WriteLine(this.Name);
}
}
결론
Reflection
은 동적으로 프로퍼티 or 메서드를 수정하여 호출 할 수 있다.