본문 바로가기
C#

[C#] 어셈블리 내 클래스 타입 가져오기

by 소리쿤 2022. 2. 24.

https://docs.microsoft.com/ko-kr/dotnet/api/system.reflection.assembly?view=net-6.0 

 

Assembly 클래스 (System.Reflection)

다시 사용 및 버전 지정이 가능한, 공용 언어 런타임 애플리케이션의 자체 설명 빌딩 블록인 어셈블리를 나타냅니다.

docs.microsoft.com

추가로 필요한 게 있다면 이 곳을 참조하자

 

Type t = typeof(T);
var csharp = Assembly.GetAssembly(t);
var parsers = csharp.GetTypes().Where(type => type.IsSubclassOf(t)).ToArray();

제네릭 타입 T의 서브 클래스 타입을 가져오는 예제

 

하지만 위 코드를 사용하는 데 있어 주의할 점은, 

 

특정 타입이 존재하는 어셈블리를 가져오고,

해당 어셈블리 안의 모든 타입을 가져오는 것이기 때문에, 부하가 얼마나 걸릴 지 알기 힘들다.

 

에디터 환경 등 성능에 큰 이슈가 없거나, 있어도 필요하다면 사용처에 맞게 캐싱하여 사용하는 것이 좋겠다.

 

https://penspanic.github.io/csharp_dotnet/2020/10/09/thoughts-about-csharp-reflection/

 

C# - Reflection에 대한 고찰

Reflection에 대한 고찰과 약간의 팁

penspanic.github.io

 

'C#' 카테고리의 다른 글

[C#] Indexer  (0) 2022.06.01
[C#] volatile이 무슨 키워드임?  (0) 2022.04.30
[C#] enum과 foreach 주의할 점  (0) 2022.02.24
[C#] Add와 AddRange  (0) 2022.02.16
[C#] C# Event와 Unity Event 소개 및 비교  (0) 2021.12.01