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 |