1. 타입 정보 가져오기
Type type = typeof(MyClass);
Console.WriteLine(type.Name); // MyClass
Console.WriteLine(type.Namespace); // MyNamespace
2. 객체 생성
Type type = typeof(MyClass);
object instance = Activator.CreateInstance(type);
3. 메서드 호출
Type type = typeof(MyClass);
MethodInfo method = type.GetMethod("MyMethod");
object result = method.Invoke(instance, new object[] { parameter });
4. 속성 및 필드 접근
PropertyInfo property = type.GetProperty("MyProperty");
property.SetValue(instance, newValue); // 값 설정
object value = property.GetValue(instance); // 값 가져오기
5. 어셈블리 정보 가져오기
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] types = assembly.GetTypes();
using System;
using System.Reflection;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void Greet()
{
Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");
}
}
public class ReflectionExample
{
public static void Main()
{
// Person 클래스의 타입 정보 얻기
Type personType = typeof(Person);
// Person 객체 생성
object personInstance = Activator.CreateInstance(personType);
// 속성 설정
PropertyInfo nameProperty = personType.GetProperty("Name");
nameProperty.SetValue(personInstance, "John");
PropertyInfo ageProperty = personType.GetProperty("Age");
ageProperty.SetValue(personInstance, 30);
// 메서드 호출
MethodInfo greetMethod = personType.GetMethod("Greet");
greetMethod.Invoke(personInstance, null);
}
}