2024-07-15

.NET 프레임워크에서 제공하는 기능으로,
실행 중인 프로그램이 자신의 구조와 동작을 검사하고 수정할 수 있게 해주는 기능이다.
테스트 및 디버그 목적으로 사용하지만, 단점도 존재하므로 상황에 맞게 사용해주어야 한다.
C# 의 Object 클래스는 모든 데이터 타입의 부모(조상)이다.
따라서, Object 클래스에 존재하는 ToString(), Equals(), GetType(), GetHashCode(), ReferenceEquals() 메서드를 사용할 수 있다.
이 중, GetType() 메서드를 통해 Type 이라는 데이터 타입의 객체를 반환하여
데이터 타입 및 네임스페이스를 알 수 있다.
using System;
using System.Reflection;
public class Character
{
public int Level { get; set; }
public void PrintClassName()
{
// TODO: 리플렉션을 사용하여 클래스의 이름을 출력하는 코드 작성
Console.WriteLine($"Class Name: {GetType().Name}");
//
}
}
public class Warrior : Character
{
}
public class Mage : Character
{
}
public class Archer : Character
{
}
class Program
{
static void Main(string[] args)
{
Warrior warrior = new Warrior();
Mage mage = new Mage();
Archer archer = new Archer();
// 리플렉션을 사용하여 클래스 이름 출력
warrior.PrintClassName();
mage.PrintClassName();
archer.PrintClassName();
}
}
디버깅이나 런타임에 알 수 없는 객체의 동작을 분석할 때 사용할 수 있는
리플렉션 기능에 대해 알아보았다.
아직까진 써 본 적이 없지만,
나중에 디버깅이 잘 되지 않을 때, 해당 기능을 사용해볼 수 있을 것 같다.