본문 바로가기

Programming/.NET

[.NET] .NET 리플렉션

.NET 리플렉션

 
리플렉션이란 .NET환경에서 런타임의 형식에 대한 정보를 얻는 과정을 말합니다.
System.Reflection 네임스페이스 클래스와 System.Type을 함께 사용하여 로드된

어셈블리 및 어셈블리 내에 정의된 형식 정보를 가져올 수 있습니다. (클래스, 인터페이스, 값 형식)

리플렉션을 사용하여 동적으로 형식 인스턴스를 만들거나, 형식을 기존 개체에 바인딩하거나, 
기존 개체에서 형식을 가져올 수 있습니다. 그리고 나서 해당 형식의 메서드를 호출하거나 필드 및 속성에 액세스할 수 있습니다. 

.NET의 형식메타데이터는 리플렉션을 위해 있다고도 하는데

아래와 같은 방법으로 해당 정보를 가져올 수 있고 더 많습니다.
type.Assembly - Assembly에 대하여
type.Attributes - Attributes에 대하여
type.GetMember - Member Info에 대하여
type.GetFilds - Member Fild에대하여

또한 .NET의 경우는 해당되는 것의 가시권에 있는 정보만 알려줍니다.
아래와 같은 방법으로 사용할 수 있습니다.
Type type = ec.Type();
MemberInfo[]arr = type.GetMembers();  //모든 멤버가 나옴
FieldInfo[] fis = type.GetFields();           //가시권에 있는 필드가 나옴
MethodInfo[] mi2 = type.GetMethod();  //메소드에 대해 

이런 리플렉션의 경우는 DLL을 명시적으로 사용해야 할 때 효과적입니다.
그 이유는 해당되는 DLL이 무엇인지 뭐하는 dll인지 모를 때 이게 뭐하는 것인지 알아내기 위해서 사용합니다.

저 같은 경우에는.. 명시적 DLL의 사용이 아닐 경우는 리플렉션을 사용한 일은 없는 것 같습니다.
그냥 이런거도 있다 정도만.

참조: https://docs.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/reflection