.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
'Programming > .NET' 카테고리의 다른 글
[C#] 00. C# 시작하기(Visual Studio 설치하기) (0) | 2020.02.02 |
---|---|
[C#] C# 이란, C#의 특징 (0) | 2020.01.28 |
[.NET] .NET 어셈블리(어셈블리의 구성) (0) | 2020.01.11 |
[.NET] .NET 어셈블리(어셈블리의 종류) (0) | 2020.01.10 |
[.NET] 강력한 이름 (0) | 2020.01.07 |