용어집
문서에서 등장할 개념을 한곳에서 짚기 위한 참고 페이지입니다. 정의는 UNInject의 방식에서 말하는 실제 구현에 맞춥니다.
D.I 일반
| 용어 | 설명 |
|---|---|
| Provider (공급자) | 의존성 인스턴스를 제공하는 쪽. UNInject에서는 [Referral] / [SceneReferral]이 붙은 매니저 컴포넌트, 또는 런타임 Register로 올라간 Component가 해당됩니다. |
| Consumer (소비자) | 의존성을 필드·생성자 파라미터로 받는 쪽. [GlobalInject] / [SceneInject] / [Inject] 등이 붙은 타입입니다. |
| 주입(Injection) | 외부(Installer·세터)가 Consumer 필드에 참조를 대입하는 과정. 런타임에는 TryInjectTarget, Create<T>() 필드 단계 등으로 수행됩니다. |
스코프·Installer
| 용어 | 설명 |
|---|---|
| 3-Tier 스코프 | 전역(Master) / 씬(Scene) / 로컬(Object) 세 층. 각각 MasterInstaller, SceneInstaller, ObjectInstaller가 담당합니다. |
| MasterInstaller | DontDestroyOnLoad 수명의 전역 레지스트리. _globalReferrals 베이크 → Dictionary<RegistryKey, Component> 재구성. |
| SceneInstaller | 현재 씬 단위 레지스트리. _sceneReferrals 베이크, SceneExitPolicy로 언로드 시 정리 방식 제어. |
| ObjectInstaller | 특정 루트 서브트리의 로컬 레지스트리 + 자식에 대한 [GlobalInject]/[SceneInject] 주입. _parentScope로 상위 체인 지정 가능. |
| IScope | 세 Installer가 구현하는 공통 계약: Register / Unregister / Resolve / Create<T> / UnregisterTickable 등. |
레지스트리·키
| 용어 | 설명 |
|---|---|
| RegistryKey | (Type, Id) 복합 키. Id가 비어 있으면 무키(기본) 바인딩과 동일합니다. |
| 무키 바인딩 | Id == string.Empty인 등록·조회. 동일 타입당 하나의 기본 인스턴스를 가정합니다. |
| Named 바인딩 | Id 문자열로 같은 Type의 여러 인스턴스를 구분합니다. [Referral(id, typeof(T))]와 [GlobalInject(id)]가 같은 Id로 짝을 맞춥니다. |
| Safety Net | Master/Scene Resolve에서 첫 미스 시 레지스트리를 1회 재구성하는 복구 패턴. 이후에는 추가 전체 스캔 없이 조회만 수행합니다. |
속성(Attributes)
| 용어 | 설명 |
|---|---|
[Inject] | 로컬 트리: 에디터 Bake로 형제·자식 Component 참조를 직렬화. 런타임에는 Unity 역직렬화만 사용합니다. |
[GlobalInject] | 전역 레지스트리에서 Resolve(type, id)로 채웁니다. 필드·Create<T> 생성자 파라미터에 사용합니다. |
[SceneInject] | 씬 레지스트리에서 동일하게 해결합니다. |
[Referral] | 클래스에 붙여 MasterInstaller 색인 대상이 되게 합니다. BindType·Id로 키 형태를 제한할 수 있습니다. |
[SceneReferral] | 씬 전용 Provider 마커. |
[InjectConstructor] | Create<T>()가 사용할 생성자를 지정합니다. 없으면 public 생성자가 하나일 때 자동 선택됩니다. |
에디터·코드 생성
| 용어 | 설명 |
|---|---|
| Bake (Dependencies) | ObjectInstaller 컨텍스트 메뉴·인스펙터 버튼으로 [Inject] 필드를 계층에서 찾아 인스펙터에 기록하는 작업. |
| Refresh Global / Scene Registry | 씬을 스캔해 _globalReferrals / _sceneReferrals 리스트를 채웁니다. |
| Roslyn Source Generator | UNInjectGenerator가 컴파일 시 세터·플랜 등록 코드를 생성합니다. partial 타입과 결합됩니다. |
| 생성 플랜 | 제너레이터가 TypeDataCache에 등록한 필드 목록·세터. 리플렉션 없이 주입할 때 사용합니다. |
| 폴백 경로 | 생성 플랜이 없을 때 Expression Tree 또는 FieldInfo.SetValue로 세터를 구성하는 경로. IL2CPP·핫패스에 불리합니다. |
런타임 패턴
| 용어 | 설명 |
|---|---|
Create<T>() | IScope에서 순수 C# 인스턴스를 생성자 + 필드 주입으로 만듭니다. MonoBehaviour에는 사용하지 않습니다. |
| Wide 매핑 | BindType 없이 RegisterTypeMappings 시 구체 타입 + 허용 인터페이스 + 베이스 체인까지 여러 RegistryKey에 등록하는 동작. |
| ScopeOwnerTracker | Register(comp, owner) 시 owner GameObject에 붙어, owner 파괴 시 해당 등록을 일괄 해제합니다. |
| TickableRegistry | ITickable / IFixedTickable / ILateTickable을 Installer의 Update 계열로 위임. 스냅샷 순회, 빈 목록은 틱 생략. |
IScopeDestroyable | 스코프 OnDestroy 시 ClearWithDestroy에서 틱 정리 전 호출되는 정리 콜백. |
IPoolInjectionTarget | InjectTargetFromPool / ReleaseTargetToPool과 연동되는 풀 라이프사이클 콜백. |
IInjected | 필수 주입이 성공했을 때 호출되는 OnInjected(). |
TypeDataCache | 필드·생성자·생성 팩토리 캐시. HasAnyInjectField로 주입 없는 타입을 Awake 순회에서 건너뜁니다. |
진단·빌드
| 용어 | 설명 |
|---|---|
| MasterInstallerPlayModeGuard | Play 진입 시 전역 레지스트리가 비었으면 경고. |
| UNInjectFallbackGuard | partial 누락 등 폴백 경로로 갈 타입을 Play 직전에 나열합니다. |
| UNInjectBakeValidator | 빌드 전(및 메뉴) 필수 [GlobalInject]/[SceneInject]와 베이크 리스트 교차 검증. UNINJECT_STRICT_BUILD로 실패 시 빌드 중단. |
| UNINJECT_PROFILING | UNInjectProfiler로 주입 시간을 누적합니다. |