프로그래밍 이야기

C# 리플렉션(Reflection) 개념잡기

원소랑 2023. 8. 30. 15:56

C#에서 리플렉션(Reflection) 기능은

프로그램이 런타임 중에 동적으로 객체의 타입 정보를 획득해서 접근하고 활용할 수 있는 기능.

 

리플렉션은 주로 System.Reflection 네임스페이스 내의 기능들을 사용하여 런타임에 타입 정보를 동적으로 검사하거나 조작하는 것.

GetType() 메서드는 객체의 런타임 타입을 가져오는 것으로, 이것도 정적인 타입 정보를 가져오는 것이므로 일반적으로는 리플렉션을 사용했다고 보기 어렵.

 

System.Reflection 네임스페이스의 기능을 사용하는 경우에야 리플렉션을 사용한 것으로 간주하며, typeof 연산이나 GetType() 메서드는 해당 범주에 포함되지 않는 것으로 볼 수 있음.

 

 이름이 리플렉션(Reflection)일까?

 C#의 리플렉션(Reflection)은 프로그램이 런타임 중에 객체의 타입 정보를 동적으로 획득하고, 해당 타입의 멤버들을 접근하고 조작할 수 있는 기능을 말합니다.

"리플렉션(Reflection)"이라는 이름은 이러한 기능이 타입의 구조를 피상적으로 반사하여 탐사하고 조사하는 개념에서 유래했습니다. 프로그램이 자신의 구조를 "반사(Reflection)"하여 탐사하고 조작하는 것과 유사한 개념이라서 이런 이름이 사용되었습니다.

C# 리플렉션은 객체 지향 프로그래밍의 핵심 원칙 중 하나인 "자기 설명(Self-Description)" 원칙을 반영합니다. 이 원칙은 프로그램이 자체의 구조와 데이터에 대한 정보를 가지고 있어야 하며, 이를 활용하여 동적으로 조작하거나 검사할 수 있어야 한다는 개념을 나타냅니다. "리플렉션"이라는 용어는 이러한 자기 설명 원칙을 반영하고, 프로그램이 런타임에서 자신의 구조를 탐사하고 활용할 수 있는 능력을 강조하기 위해 선택된 것으로 볼 수 있습니다.

 

 

https://learn.microsoft.com/ko-kr/dotnet/api/system.reflection?view=netstandard-2.1 

 

System.Reflection 네임스페이스

메타데이터를 검사하여 관리 코드에서 어셈블리, 모듈, 멤버, 매개 변수 및 기타 엔터티에 대한 정보를 검색하는 형식이 포함되어 있습니다. 이러한 형식을 사용하면 로드된 형식의 인스턴스를

learn.microsoft.com

 

추천도서 <이것이 C#이다> 구입 링크

https://link.coupang.com/a/8gQeE

 

이것이 C#이다 단계별 학습으로 탄탄한 기본기를 다져줄 C# 입문서 3판

COUPANG

www.coupang.com

(링크를 통해 도서 구입시 일정액의 수수료를 지급받습니다.)


 

728x90
반응형