SW 기능/C#

Reflection

tacoyaggi 2024. 2. 2. 09:48

Reflection

  • Reflection 은 프로그램의 형식과 멤버들에 대한 정보를 검사하고 조작할 수 있다.
  • 주로 Type 클래스를 사용하여 형식에 대한 정보를 얻는다.

예제

Type 클래스를 사용하여 해당 클래스의 형식(Type) 정보를 가져온다.

가져온 Type 기반으로 PropertyMethod 정보를 가져온다.

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 메서드를 수정하여 호출 할 수 있다.