소개
C# Reflection은 .NET Framework에서 제공하는 기능으로, 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. Reflection을 사용하면 실행 중에 형식, 메서드, 필드 등을 검사하고 이러한 멤버를 조작할 수 있습니다. 이번 글에서는 C# Reflection에 대해 자세히 살펴보겠습니다.
Reflection이란?
Reflection은 .NET Framework에서 제공하는 기능으로, 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. Reflection을 사용하면 실행 중에 형식, 메서드, 필드 등을 검사하고 이러한 멤버를 조작할 수 있습니다. Reflection은 주로 다음과 같은 작업을 수행하는 데 사용됩니다.
- 객체의 형식을 검사하거나 변경합니다.
- 실행 중에 새로운 객체 인스턴스를 만듭니다.
- 실행 중에 메서드를 호출합니다.
- 실행 중에 필드 값을 가져오거나 설정합니다.
Reflection 사용 예제
다음은 Reflection을 사용하여 객체의 형식을 검사하고 메서드를 호출하는 간단한 예제입니다.
using System;
using System.Reflection;
class Program
{
static void Main()
{
// 객체 생성
var obj = new MyClass();
// 형식 검사
Type type = obj.GetType();
Console.WriteLine("Type Name: " + type.Name);
// 메서드 호출
MethodInfo methodInfo = type.GetMethod("MyMethod");
methodInfo.Invoke(obj, null);
}
}
class MyClass
{
public void MyMethod()
{
Console.WriteLine("MyMethod called");
}
}
위의 예제에서는 MyClass라는 간단한 클래스를 정의하고, 이 클래스의 MyMethod라는 메서드를 호출합니다. Main 메서드에서는 MyClass의 인스턴스를 생성하고, GetType() 메서드를 사용하여 해당 인스턴스의 형식을 가져옵니다. 형식을 가져온 후, GetMethod() 메서드를 사용하여 MyMethod 메서드에 대한 MethodInfo 객체를 가져옵니다. 마지막으로, Invoke() 메서드를 사용하여 MyMethod 메서드를 호출합니다.
Reflection의 장점
Reflection은 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. 이를 통해 런타임 시점에서 유연한 코드 작성이 가능해집니다. Reflection을 사용하면 다음과 같은 작업을 수행할 수 있습니다.
- 코드의 동적 생성
- 코드의 동적 로딩
- 메서드 호출
- 속성 및 필드 값 변경
- 형식 검사
Reflection의 단점
Reflection은 일반적으로 성능 저하를 초래할 수 있습니다. Reflection을 사용하면 실행 속도가 느려지고 메모리 사용량이 증가할 수 있습니다. 또한, Reflection을 사용하면 코드의 가독성이 떨어질 수 있습니다.
결론
C# Reflection은 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. Reflection을 사용하면 코드의 유연성이 향상되며, 동적으로 코드를 조작할 수 있습니다. 하지만 Reflection은 일반적으로 성능 저하를 초래할 수 있으므로, 사용 시 주의가 필요합니다. 이번 글을 통해 C# Reflection에 대해 더욱 자세히 알아보았습니다.
'C#' 카테고리의 다른 글
C# 문자열 (0) | 2023.04.07 |
---|---|
C# 사용자 지정 예외 클래스 (0) | 2023.04.06 |
C# 네이밍 규칙 : PascalCase, camelCase, Snake case (0) | 2023.04.05 |
C# 객체지향 다형성 : new, virtual, override, sealed (0) | 2023.03.30 |
C# 정규표현식 (0) | 2023.03.29 |