Resolution Flow
Class resolution (Get<T>)
- Compute key:
ATagorT.ClassName. - Check if registered.
- Push key to detect circular dependencies.
- If lazy and no instance exists, create/store
TServiceData. - If needed, auto-resolve
Create(...)params via RTTI. - Instantiate via
TServiceData.GetInstance<T>(...).
Note: Get<T> returns nil when missing (no exception).
Interface resolution (GetInterface<I>)
- Compute key: interface GUID (or
ATag). - Check if registered.
- Push key for circular detection.
- If no instance exists, create
TServiceDatafor interface. - If needed, auto-resolve
Create(...)params. - Return
Ior throwEServiceNotFoundwhen missing.