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
추천도서 <이것이 C#이다> 구입 링크
https://link.coupang.com/a/8gQeE
(링크를 통해 도서 구입시 일정액의 수수료를 지급받습니다.)
'프로그래밍 이야기' 카테고리의 다른 글
스마트 포인터 노트 auto_ptr, unique_ptr, shared_ptr, weak_ptr (0) | 2023.09.25 |
---|---|
MSB8020 Error v143에 대한 빌드 도구를 찾을 수 없습니다. 해결법 (0) | 2023.09.04 |
소수점 연산 오차 관련 (Epsilon, Approximately, IsNearlyEqual) (0) | 2023.08.31 |
Freeware Hex Editor and Disk Editor (0) | 2023.08.27 |
친절한 엔지니어링 <Kind Engineering> How To Engineer Kindness by Evan Smith (0) | 2023.08.26 |
C# .Net Framework v4.8 이상 부터는 Dictionary Key 로 enum 을 써도 garbage 가 발생하지 않는다 (0) | 2023.08.24 |
ECMA 란? (0) | 2023.08.22 |